home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / mail / elm / elm2.4.p23a.Z / elm2.4.p23a
Encoding:
Text File  |  1993-09-26  |  88.7 KB  |  2,922 lines

  1. Subject: elm 2.4 Patch #23a
  2. Summary: This is an official patch for elm 2.4 system.  Please apply it.
  3. Priority: HIGH
  4.  
  5. THIS IS PART 1 OF A 5 PART PATCH
  6.  
  7.  
  8. Write options to elmrc even if their values are empty strings.
  9. Rationalize code that reads and writes weedouts and alternates.
  10. From: chip%fin@myrddin.sybus.com
  11.  
  12. Correct problem in fetch_alias() with alias record fixup that caused
  13. core dump on machines with pointers larger than int.  This problem
  14. was reported on comp.mail.elm by Richard Eckman and Jim Brown.  Simplify
  15. get_one_alias() by having it use fetch_alias().
  16.  
  17. break_down_tolist() tried to blindly split address lists at "," which
  18. caused bogus results with addreses that had a comma inside a comment
  19. or quoted text, such as "user@domain (Last, First)".  This patch steps
  20. through the address in quanta of RFC-822 tokens when searching for a
  21. delimiting comma.  It also adds "rfc822_toklen()" to the library to
  22. get that length.
  23. From: chip@chinacat.unicom.com (Chip Rosenthal)
  24.  
  25. This fixes a bug in the MIME code.  Include_Part() uses expand_env()
  26. to expand the include file name, but since expand_env() is destructive
  27. [it uses strtok()] the file name gets corrupted, and the "Content-Name"
  28. header can contain a bogus value.  The easy fix would be a one-line
  29. hack to Include_Part to use a temporary buffer.  This patch does not
  30. implement the easy fix.  *Every* place expand_env() is used, its side
  31. effects cause problems.  I think the right fix is to make expand_env()
  32. non-destructive (i.e. have it duplicate the input to a temporary buffer
  33. and work from there).  The attached patch modifies expand_env() in
  34. that manner, and eliminates all of the `copy to a temporary buffer'
  35. calls that precede it throughout elm.
  36. From: chip@chinacat.unicom.com (Chip Rosenthal)
  37.  
  38. I have been repetedly crashing elm 2.4.22 until I discovered that a
  39. test for failing to open the system elmrc file is mising. This could
  40. usefully be added in read_rc.c. Version info and patch follows:
  41. From: "C.R. Ritson" <C.R.Ritson@newcastle.ac.uk>
  42.  
  43. Greatly simplified "lib/striparens.c" to use new rfc822_toklen() routine.
  44. This cut more than 50% out of the object size.  Also added _TEST case.
  45. From: chip@chinacat.unicom.com (Chip Rosenthal)
  46.  
  47. When resyncing aliases from elm, and there was aliases to delete,
  48. the alias.pag file could be corrupted since file_offset wasn't set to zero.
  49. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  50.  
  51. A long-standing bug of handling replies to VMS systems.
  52. Original "From: " -line is of format:
  53.     From: "NAME \"Real Name\"" <USERNAME@vms-system>
  54. (PMDF mailer)
  55.     Anyway,  parse_arpa_who()  strips quotes too cleanly
  56. resulting data:
  57.     NAME \"Real Name\
  58. which, when put into parenthesis, becomes:
  59.     (NAME \"Real Name\)
  60. which in its turn lacks closing `)'
  61. Patch of  lib/parsarpwho.c  fixes that.
  62. strtokq() started one position too late to search for next double-quote (") char.
  63. Another one-off (chops off trailing comment character, quote or not..)  in   src/reply.c
  64. From:    Matti Aarnio <mea@utu.fi>
  65.  
  66. Three changes to expand_env() in src/read_rc.c:  make it non-destructive,
  67. have it return an error code instead of bailing out, and add a buffer
  68. size argument to avoid overwritting the destination.  The first is to
  69. avoid all of the gymnastics Elm needed to go through (and occasionally
  70. forgot to go through) to protect the value handed to expand_env().
  71. The second is because expand_env() was originally written to support
  72. "elmrc" and bailing out was a reasonable thing to do there -- but not
  73. in the other places where it has since been used.  The third is just
  74. a matter of practicing safe source code.
  75.  
  76. This patch changes all invocations to expand_env() to eliminate making
  77. temporary copies (now that the routine is non-destructive) and to pass
  78. in a destination length.  Since expand_env() no longer bails out on
  79. error, a do_expand_env() routine was added to src/read_rc.c handle
  80. this.  Moreover, the error message now gives some indication of what
  81. the problem is rather than just saying "can't expand".
  82.  
  83. Gratitous change to src/editmsg.c renaming filename variables to
  84. clarify the purpose.
  85. From: chip@chinacat.unicom.com (Chip Rosenthal)
  86.  
  87. [ Patch description ]
  88. Update the example elmrc and move a couple out of order variable
  89. descriptions.
  90. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  91.  
  92. Handle reply-to in batch mode.
  93. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  94.  
  95. In fastmail, if environment variable $REPLYTO is set, use it as
  96. default Reply-To.  Also, eliminate unnecessary strlen() calls.
  97. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  98.  
  99. Support aliases both on 64 bit and 32 bit machines at the same time.
  100. From: Dan Mosedale <mosedale@genome.stanford.edu>
  101.  
  102. Spaces in weedout strings wasn't preserved ("From " became "From").
  103. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  104.  
  105. Added text about how the weedout list works w.r.t From: and From_
  106. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  107.  
  108. default_weedlist() can't use pmalloc, because weedout() calls free when
  109. it encounters *clear-weed-list*.
  110. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  111.  
  112. The NLS messages for elm -h output didn't have the -i or -t options.
  113. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  114.  
  115. The message CannotInitErrorExpanding was called CantExpandEnvVar in s_elm.m.
  116. Change it for consistency.
  117. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  118.  
  119. Since it was not intended that varargs.h and stdarg.h were
  120. included simultaneously there may be colliding definitions
  121. on some systems if you use a standard C compiler. If both
  122. of these headers are included the compiler has no way to
  123. know which definitions to use.
  124. From: Jukka Ukkonen <ukkonen@csc.fi>
  125.  
  126. "*clear-weed-list*" in elmrc was wiped out when one saved the options in elm.
  127. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  128.  
  129. When STDC is used on Convex the feof() function is defined as
  130. a true library routine in the header files and moreover the
  131. library routine also leaks royally. It returns always 1!!
  132. So we have to use a macro. Convex naturally does not provide
  133. you with one though if you are using a STDC compiler. So we
  134. have to include one.
  135. From: Jukka Ukkonen <ukkonen@csc.fi>
  136.  
  137. Removed bogus string lockfile.
  138. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  139.  
  140. The last character of a form field gets zapped if more characters than
  141. the field expects are entered.
  142. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  143.  
  144. Patch for Elm 2.4 PL22 to correct handling of SIGWINCH signals on
  145. DecStations with Ultrix 4.2.
  146. The problem was that elm running in an xterm exits silently when the
  147. window is resize. This was caused by incorrect signal handling for BSD.
  148. From: vogt@isa.de
  149.  
  150. Implement new timezone handling.  New file lib/get_tz.c with new timezone
  151. routines.  Added new TZMINS_USE_xxxxxx and TZNAME_USE_xxxxxx configuration
  152. definitions.  Obsoleted TZNAME, ALTCHECK, and TZ_MINUTESWEST configuration
  153. definitions.  Updated Configure.  Modified lib/getarpdate.c and
  154. lib/strftime.c to use new timezone routines.
  155. From: chip@chinacat.unicom.com (Chip Rosenthal)
  156.  
  157. Add proper casts to free() calls to suppress warnings.
  158. Properly cast return types.
  159. From: chip@chinacat.unicom.com (Chip Rosenthal)
  160.  
  161. Added -d option to elmalias.
  162. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  163.  
  164. Elm tries to replace the system toupper() and tolower() on current
  165. BSD systems, which is unnecessary.  Even worse, the replacements
  166. collide during linking with routines in isctype.o.  This patch adds
  167. a Configure test to determine whether replacements are really needed
  168. (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  169. globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  170. there.  Inclusion of <ctype.h> was removed from *all* the individual
  171. files, and the toupper() and tolower() routines in lib/opt_utils.c
  172. were dropped.
  173. From: chip@chinacat.unicom.com (Chip Rosenthal)
  174.  
  175. Fix signal type for 386bsd
  176. From: Scott Mace <smace@freefall.cdrom.com>
  177.  
  178. When an environment variable was given as the tmpdir definition the src
  179. and dest overlapped in expand_env.  This made elm produce a garbage
  180. expansion because expand_env cannot cope with overlapping src and
  181. dest.  I added a new variable raw_temp_dir to keep src and dest not to
  182. overlap.
  183. From: Jukka Ukkonen <ukkonen@csc.fi>
  184.  
  185. I compiled elm 2.4.22 with Purify 2 and fixed some memory leaks and
  186. some reads of unitialized memory.
  187. From: vogt@isa.de
  188.  
  189. A change to answer:s mail command to be like those of elm and filter.
  190. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  191.  
  192. Elm was failing to write an empty "alternatives" list to elmrc.
  193. From: chip@chinacat.unicom.com (Chip Rosenthal)
  194.  
  195. Usage message for elmalias changed.
  196. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  197.  
  198. Correct typo and use hard spaces within quotes in *clear-weed-list* note.
  199. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  200.  
  201. fix where checkalias doesn't fully expand multi-database aliases
  202. From: Steve Wolf <woof@atl.hp.com>
  203.  
  204. The macro ctrl(c) did not work correctly for a DEL character
  205. neither did it make the backward mapping from a control char
  206. to the letter that is normally used with an up-arrow prefix
  207. to represent the control character.
  208. From: Jukka Ukkonen <ukkonen@csc.fi>
  209.  
  210. Don't declare _exit() if <unistd.h> already did it.
  211. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  212.  
  213. Test ANSI_C, not __STDC__ (which is not set on e.g. AIX).
  214. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  215.  
  216. The ANSI version of varargs is "stdarg", not "stdargs".
  217. From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  218.  
  219. Added some documentation for textencoding variable.
  220. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  221.  
  222. more purify found errors
  223. From: vogt@isa.de
  224.  
  225. Add missing parens
  226. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  227.  
  228. Fix problem where deleting to previous line caused duplication due to the
  229. file being opened for append (in append mode, all writes are to the end of
  230. file regardless of the file pointer).
  231. From: pdc@lunch.asd.sgi.com (Paul Close)
  232.  
  233. have Writechar() backspace over the left edge of the screen to the end
  234. of the previous line if the current line is not the first line on the
  235. screen.
  236. From: Jukka Ukkonen <ukkonen@csc.fi>
  237.  
  238. Call to expand_env for pager should be call to do_expand_env.
  239. temp_dir not initialized.
  240. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  241.  
  242. Try splitting chown into two calls to set group on systems where
  243. chown of owner is restricted.
  244. From: Syd
  245.  
  246. strtokq was called with the wrong number of parameters.
  247. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  248.  
  249. Add ability for elmalias to determine HOME if missing from the environment.
  250. From: chip@chinacat.unicom.com (Chip Rosenthal)
  251.  
  252. Changed a few buffers from LONG_STRING (512) to VERY_LONG_STRING
  253. to avoid long header lines overflowing the allocated space. At
  254. least 1024 bytes should be allowed in any header line/field.
  255. From: Jukka Ukkonen <ukkonen@csc.fi>
  256.  
  257. Here's some more patch stuff for undersize buffers for header lines.
  258. From: Jukka Ukkonen <ukkonen@csc.fi>
  259.  
  260. Fix a code portability problem with Convex.
  261. From: Jukka Ukkonen <ukkonen@csc.fi>
  262.  
  263. I found a few places more where the code was missing a call
  264. to fflush() before it called unlock() and fclose()/exit()
  265. right after unlocking the mail drop.
  266. From: Jukka Ukkonen <ukkonen@csc.fi>
  267.  
  268. Erroneous Content-Length:s that ended up beyond the end of the folder
  269. wasn't checked for, so the rest of the folder became one big message.
  270. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  271.  
  272. expand() didn't read the global rc file if the user elmrc didn't exist or
  273. didn't have an entry for maildir.
  274. From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  275.  
  276. Conform textencoding addition to style standard.
  277. From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  278.  
  279. Although it doesnt solve the limit/resync problem of new
  280. messages, allow them to be accessed anyway.
  281. From: austig@solan.unit.no
  282.  
  283.  
  284. Fix:    From rn, say "| patch -p -N -d DIR", where DIR is your elm source
  285.     directory.  Outside of rn, say "cd DIR; patch -p -N <thisarticle".
  286.     If you don't have the patch program, apply the following by hand,
  287.     or get patch (version 2.0, latest patchlevel).
  288.  
  289.     After patching:
  290.         Apply patches 23b, 23c, 23d, 23e next
  291.  
  292.     If patch indicates that patchlevel is the wrong version, you may need
  293.     to apply one or more previous patches, or the patch may already
  294.     have been applied.  See the patchlevel.h file to find out what has or
  295.     has not been applied.  In any event, don't continue with the patch.
  296.  
  297.     If you are missing previous patches they can be obtained from our:
  298.     archive server.
  299.  
  300.     Syd Weinstein
  301.     elm@DSI.COM
  302.  
  303.     The patches are available from the dsinc archive server
  304.     Send the following message to archive-server@DSI.COM for
  305.     a list of available patches:
  306.  
  307.     Subject: patch list
  308.     send index elm
  309.  
  310. Index: hdrs/patchlevel.h
  311. Prereq: "22"
  312. *** ../elm2.4/hdrs/patchlevel.h    Sun Jun  6 14:24:45 1993
  313. --- hdrs/patchlevel.h    Sun Sep 26 21:27:22 1993
  314. ***************
  315. *** 1 ****
  316. ! #define PATCHLEVEL "22"
  317. --- 1 ----
  318. ! #define PATCHLEVEL "23"
  319.  
  320.  
  321. Index: Configure
  322. Prereq: 5.28
  323. *** ../elm2.4/Configure    Sun Jun  6 14:24:46 1993
  324. --- Configure    Sun Sep 26 21:51:53 1993
  325. ***************
  326. *** 8,14 ****
  327.   # and edit it to reflect your system.  Some packages may include samples
  328.   # of config.h for certain machines, so you might look for one of those.)
  329.   #
  330. ! # $Header: /home/syd/elm.rel/RCS/Configure,v 5.28 1993/06/06 18:11:06 syd Exp $
  331.   #
  332.   # Yes, you may rip this off to use in other distribution packages.
  333.   # (Note: this Configure script was generated automatically.  Rather than
  334. --- 8,14 ----
  335.   # and edit it to reflect your system.  Some packages may include samples
  336.   # of config.h for certain machines, so you might look for one of those.)
  337.   #
  338. ! # $Header: /home/syd/elm.rel/RCS/Configure,v 5.36 1993/09/27 01:51:38 syd Exp $
  339.   #
  340.   # Yes, you may rip this off to use in other distribution packages.
  341.   # (Note: this Configure script was generated automatically.  Rather than
  342. ***************
  343. *** 122,131 ****
  344.   execmail=''
  345.   libswanted=''
  346.   c_date=''
  347. - d_altcheck=''
  348.   d_ascii=''
  349.   d_calendar=''
  350.   calendar=''
  351.   d_content=''
  352.   d_crypt=''
  353.   cryptlib=''
  354. --- 122,132 ----
  355.   execmail=''
  356.   libswanted=''
  357.   c_date=''
  358.   d_ascii=''
  359. + d_broke_ctype=''
  360.   d_calendar=''
  361.   calendar=''
  362. + d_chown_neg1=''
  363.   d_content=''
  364.   d_crypt=''
  365.   cryptlib=''
  366. ***************
  367. *** 166,172 ****
  368.   d_newauto=''
  369.   d_noaddfrom=''
  370.   d_usedomain=''
  371. - d_nocheckvalid=''
  372.   d_noxheader=''
  373.   d_pidcheck=''
  374.   d_ptem=''
  375. --- 167,172 ----
  376. ***************
  377. *** 200,207 ****
  378.   tempnamc=''
  379.   d_termio=''
  380.   d_termios=''
  381. - d_tz_min=''
  382. - d_tzname=''
  383.   d_useembed=''
  384.   d_utimbuf=''
  385.   d_vfork=''
  386. --- 200,205 ----
  387. ***************
  388. *** 213,218 ****
  389. --- 211,217 ----
  390.   mydomain=''
  391.   autohostname=''
  392.   i_memory=''
  393. + i_stdarg=''
  394.   i_stdlib=''
  395.   i_time=''
  396.   i_systime=''
  397. ***************
  398. *** 262,267 ****
  399. --- 261,268 ----
  400.   shsharp=''
  401.   sharpbang=''
  402.   tmpdir=''
  403. + tzmins_handling=''
  404. + tzname_handling=''
  405.   use_pmake=''
  406.   xencf=''
  407.   xenlf=''
  408. ***************
  409. *** 818,823 ****
  410. --- 819,858 ----
  411.       calendar="$ans"
  412.   fi
  413.   
  414. + : check to see if the macros are 8-bit clean, ask the user
  415. + :
  416. + $cat <<EOM
  417. + Not all environments are restricted to the ASCII 7-bit character set.
  418. + For example, the ISO 8859/1 (Latin alphabet no. 1) character set,
  419. + consisting of 8 bits and 191 printable characters, is becoming
  420. + more and more common, especially in non-English speaking countries.
  421. + Unfortunately, not all isprint() functions or macros, which ELM
  422. + uses to determine whether a character is printable or not, will
  423. + handle non-ASCII (8-bit) characters properly.  It is suggested that you
  424. + start with this value configured to handle 8-bit characters correctly
  425. + and if there are problems with Elm aborting while displaying messages
  426. + that use extended character sets to reconfigure Elm to only display
  427. + 7-bit characters.
  428. + EOM
  429. + case "$d_ascii" in
  430. +     "$define")   dflt='n';;
  431. +     *)  dflt='y';;
  432. + esac
  433. + echo "  "
  434. + rp="Should Elm assume that isprint() won't break on non-ASCII characters? [$dflt]"
  435. + $echo $n "$rp $c"
  436. + . myread
  437. + case "$ans" in
  438. +     y*) d_ascii="$undef";;
  439. +     *) d_ascii="$define";;
  440. + esac
  441.   : make some quick guesses about what we are up against
  442.   echo " "
  443.   $echo $n "Hmm...  $c"
  444. ***************
  445. *** 846,851 ****
  446. --- 881,891 ----
  447.       echo exit 1 >bsd
  448.       echo exit 1 >usg
  449.       echo exit 1 >v7
  450. +     elif $test "$uname_os" = "HP-UX" ; then
  451. +     echo "Looks like an HP-UX system, but we'll see.."
  452. +     echo exit 1 >bsd
  453. +     echo exit 0 >usg
  454. +     echo exit 1 >v7
  455.       else
  456.       echo "Looks kind of like a BSD system, but we'll see..."
  457.       echo exit 0 >bsd
  458. ***************
  459. *** 901,906 ****
  460. --- 941,1039 ----
  461.   rm -rf foo
  462.   rmlist="$rmlist bsd usg v7 eunice venix xenix"
  463.   
  464. + : find out how to find out full name
  465. + echo " "
  466. + case "$d_berknames" in
  467. + "$define")
  468. +     dflt=y;;
  469. + "$undef")
  470. +     dflt=n;;
  471. + *)
  472. +     if bsd; then
  473. +     dflt=y
  474. +     elif xenix; then
  475. +     dflt=y
  476. +     else
  477. +     dflt=n
  478. +     fi
  479. +     ;;
  480. + esac
  481. + echo "Does your /etc/passwd file keep full names in Berkeley/V7 format (name first"
  482. + $echo $n "thing after ':' in GCOS field)? [$dflt] $c"
  483. + rp="Berkeley/V7 format full name? [$dflt]"
  484. + . myread
  485. + case "$ans" in
  486. +   y*)
  487. +     d_passnames="$define"
  488. +     d_berknames="$define"
  489. +     d_usgnames="$undef"
  490. +     nametype=bsd
  491. +     ;;
  492. +   *)
  493. +     echo " "
  494. +     case "$d_usgnames" in
  495. +     "$define")
  496. +     dflt=y;;
  497. +     "$undef")
  498. +     dflt=n;;
  499. +     *)
  500. +     if usg; then
  501. +         dflt=y
  502. +     else
  503. +         dflt=n
  504. +     fi
  505. +     ;;
  506. +     esac
  507. +     echo "Does your passwd file keep full names in USG format (name sandwiched"
  508. +     $echo $n "between a '-' and a '(')? [$dflt] $c"
  509. +     rp="USG format full name? [$dflt]"
  510. +     . myread
  511. +     case "$ans" in
  512. +       n*)
  513. +     echo "Full name will be taken from ~/.fullname"
  514. +     d_passnames="$undef"
  515. +     d_berknames="$undef"
  516. +     d_usgnames="$undef"
  517. +     nametype=other
  518. +     ;;
  519. +       *)
  520. +     d_passnames="$define"
  521. +     d_berknames="$undef"
  522. +     d_usgnames="$define"
  523. +     nametype=usg
  524. +     ;;
  525. +     esac
  526. +     ;;
  527. + esac
  528. + : see if we have to deal with yellow pages, if so, put sun
  529. + : library first, as the yp password routines must override
  530. + : the c library ones
  531. + if $test -d /usr/etc/yp || $test -d /etc/yp; then
  532. +     if $test "$passcat" = "ypcat passwd"; then
  533. +     dflt=y
  534. +     elif $contains '^\+:' /etc/passwd; then
  535. +     dflt=y
  536. +     else
  537. +     dflt=n
  538. +     fi
  539. +     rp="Are you getting the passwd file via yellow pages? [$dflt]"
  540. +     $echo $n "$rp $c"
  541. +     . myread
  542. +     case "$ans" in
  543. +     y*) passcat='ypcat passwd'
  544. +     case "$libswanted" in
  545. +     '') libswanted='sun c_s';;
  546. +     *)  libswanted=`$echo "$libswanted" | $sed -e 's/sun //g'`
  547. +         libswanted="sun $libswanted";;
  548. +     esac
  549. +     ;;
  550. +     *) passcat='cat /etc/passwd';;
  551. +     esac
  552. + else
  553. +     passcat='cat /etc/passwd'
  554. + fi
  555.   # determine text processor to use, default to troff if found.
  556.   case "$roff" in
  557.   '')
  558. ***************
  559. *** 1305,1403 ****
  560.       d_bsd="$define"
  561.   fi
  562.   
  563. - : find out how to find out full name
  564. - echo " "
  565. - case "$d_berknames" in
  566. - "$define")
  567. -     dflt=y;;
  568. - "$undef")
  569. -     dflt=n;;
  570. - *)
  571. -     if bsd; then
  572. -     dflt=y
  573. -     elif xenix; then
  574. -     dflt=y
  575. -     else
  576. -     dflt=n
  577. -     fi
  578. -     ;;
  579. - esac
  580. - echo "Does your /etc/passwd file keep full names in Berkeley/V7 format (name first"
  581. - $echo $n "thing after ':' in GCOS field)? [$dflt] $c"
  582. - rp="Berkeley/V7 format full name? [$dflt]"
  583. - . myread
  584. - case "$ans" in
  585. -   y*)
  586. -     d_passnames="$define"
  587. -     d_berknames="$define"
  588. -     d_usgnames="$undef"
  589. -     nametype=bsd
  590. -     ;;
  591. -   *)
  592. -     echo " "
  593. -     case "$d_usgnames" in
  594. -     "$define")
  595. -     dflt=y;;
  596. -     "$undef")
  597. -     dflt=n;;
  598. -     *)
  599. -     if usg; then
  600. -         dflt=y
  601. -     else
  602. -         dflt=n
  603. -     fi
  604. -     ;;
  605. -     esac
  606. -     echo "Does your passwd file keep full names in USG format (name sandwiched"
  607. -     $echo $n "between a '-' and a '(')? [$dflt] $c"
  608. -     rp="USG format full name? [$dflt]"
  609. -     . myread
  610. -     case "$ans" in
  611. -       n*)
  612. -     echo "Full name will be taken from ~/.fullname"
  613. -     d_passnames="$undef"
  614. -     d_berknames="$undef"
  615. -     d_usgnames="$undef"
  616. -     nametype=other
  617. -     ;;
  618. -       *)
  619. -     d_passnames="$define"
  620. -     d_berknames="$undef"
  621. -     d_usgnames="$define"
  622. -     nametype=usg
  623. -     ;;
  624. -     esac
  625. -     ;;
  626. - esac
  627. - : see if we have to deal with yellow pages, if so, put sun
  628. - : library first, as the yp password routines must override
  629. - : the c library ones
  630. - if $test -d /usr/etc/yp || $test -d /etc/yp; then
  631. -     if $test "$passcat" = "ypcat passwd"; then
  632. -     dflt=y
  633. -     elif $contains '^\+:' /etc/passwd; then
  634. -     dflt=y
  635. -     else
  636. -     dflt=n
  637. -     fi
  638. -     rp="Are you getting the passwd file via yellow pages? [$dflt]"
  639. -     $echo $n "$rp $c"
  640. -     . myread
  641. -     case "$ans" in
  642. -     y*) passcat='ypcat passwd'
  643. -     case "$libswanted" in
  644. -     '') libswanted='sun c_s';;
  645. -     *)  libswanted=`$echo "$libswanted" | $sed -e 's/sun //g'`
  646. -         libswanted="sun $libswanted";;
  647. -     esac
  648. -     ;;
  649. -     *) passcat='cat /etc/passwd';;
  650. -     esac
  651. - else
  652. -     passcat='cat /etc/passwd'
  653. - fi
  654.   : see what memory models we can support
  655.   case "$models" in
  656.   '')
  657. --- 1438,1443 ----
  658. ***************
  659. *** 1695,1701 ****
  660.   '');;
  661.   *)  set X $cppflags
  662.       cppflags=''
  663. !     for flag do
  664.       case $flag in
  665.       -D*|-I*|-U*) cppflags="$cppflags $flag";;
  666.       esac
  667. --- 1735,1742 ----
  668.   '');;
  669.   *)  set X $cppflags
  670.       cppflags=''
  671. !     for flag
  672. !     do
  673.       case $flag in
  674.       -D*|-I*|-U*) cppflags="$cppflags $flag";;
  675.       esac
  676. ***************
  677. *** 1813,1907 ****
  678.   esac
  679.   libs="$ans"
  680.   
  681. - : check for "existence of altzone"
  682. - echo " "
  683. - case "$d_altcheck" in
  684. - "$define")    ;;
  685. - "$undef")    ;;
  686. - *)
  687. -         echo "Checking to see if altzone exists as a global variable works..."
  688. -         $rm -f try try.o
  689. -         $cat >try.c <<'EOCP'
  690. - main()
  691. -     {
  692. -     long    t;
  693. -     extern    long    altzone;
  694. -     t = altzone;
  695. -     exit(0);
  696. -     }
  697. - EOCP
  698. -         if $cc try.c -o try >/dev/null 2>&1 ; then
  699. -         d_altcheck="$define"
  700. -         echo "Your system supports altzone..."
  701. -         else
  702. -         d_altcheck="$undef"
  703. -         echo "Your system does not support altzone..."
  704. -         fi
  705. -         $rm -f try.c try.o try
  706. -     ;;
  707. - esac
  708. - : check to see if the macros are 8-bit clean, ask the user
  709. - :
  710. - $cat <<EOM
  711. - Not all environments are restricted to the ASCII 7-bit character set.
  712. - For example, the ISO 8859/1 (Latin alphabet no. 1) character set,
  713. - consisting of 8 bits and 191 printable characters, is becoming
  714. - more and more common, especially in non-English speaking countries.
  715. - Unfortunately, not all isprint() functions or macros, which ELM
  716. - uses to determine whether a character is printable or not, will
  717. - handle non-ASCII (8-bit) characters properly.  It is suggested that you
  718. - start with this value configured to handle 8-bit characters correctly
  719. - and if there are problems with Elm aborting while displaying messages
  720. - that use extended character sets to reconfigure Elm to only display
  721. - 7-bit characters.
  722. - EOM
  723. - case "$d_ascii" in
  724. -     "$define")   dflt='n';;
  725. -     *)  dflt='y';;
  726. - esac
  727. - echo "  "
  728. - rp="Should Elm assume that isprint() won't break on non-ASCII characters? [$dflt]"
  729. - $echo $n "$rp $c"
  730. - . myread
  731. - case "$ans" in
  732. -     y*) d_ascii="$undef";;
  733. -     *) d_ascii="$define";;
  734. - esac
  735. - case "$d_content" in
  736. - "$define") dflt=y;;
  737. - "$undef")  dflt=n;;
  738. - *)       dflt=n;;
  739. - esac
  740. - $cat << EOM
  741. - Some modern Mail Transport Agents (mailers) support the Content-Length: header.
  742. - In doing so, they do not wish to have messages escaped to protect 'From ' lines
  743. - in the body of the message, among other strings.  Does the Mail Transport Agent
  744. - in use on this system honor the Content-Length: header?
  745. - EOM
  746. - echo " "
  747. - rp="Honors Content-Length: header? [$dflt]"
  748. - $echo $n "$rp $c"
  749. - . myread
  750. - case "$ans" in
  751. - y*) d_content="$define";;
  752. - *)  d_content="$undef";;
  753. - esac
  754.   : get list of predefined functions in a handy place
  755.   echo " "
  756.   case "$libc" in
  757. --- 1854,1859 ----
  758. ***************
  759. *** 2100,2105 ****
  760. --- 2052,2301 ----
  761.   : 
  762.   : rmlist="$rmlist libc.tmp libc.list"
  763.   : 
  764. + : see how we invoke the C preprocessor
  765. + echo " "
  766. + echo "Now, how can we feed standard input to your C preprocessor..."
  767. + cat <<'EOT' >testcpp.c
  768. + #define ABC abc
  769. + #define XYZ xyz
  770. + ABC.XYZ
  771. + EOT
  772. + echo 'Maybe "'"$cc"' -E" will work...'
  773. + $cc -E <testcpp.c >testcpp.out 2>&1
  774. + : try to force gcc preprocessor if that is the compiler they are using
  775. + case $? in
  776. + 0) cppstdin="$cc -E";;
  777. + *) case "$cc" in
  778. +     *gcc*)
  779. +     cd ..
  780. +     echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  781. +     echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  782. +     chmod 755 cppstdin
  783. +     cppstdin=`pwd`/cppstdin
  784. +     cppminus='';
  785. +     cd UU
  786. +     $cppstdin <testcpp.c >testcpp.out 2>&1
  787. +     ;;
  788. +     esac
  789. +     ;;
  790. + esac
  791. + if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  792. +     echo "Yup, it does."
  793. +     cppstdin="$cc -E"
  794. +     cppminus='';
  795. + else
  796. +     echo 'Nope, maybe "'$cpp'" will work...'
  797. +     $cpp <testcpp.c >testcpp.out 2>&1
  798. +     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  799. +     echo "Yup, it does."
  800. +     cppstdin="$cpp"
  801. +     cppminus='';
  802. +     else
  803. +     echo 'No such luck...maybe "'$cpp' -" will work...'
  804. +     $cpp - <testcpp.c >testcpp.out 2>&1
  805. +     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  806. +         echo "It works!"
  807. +         cppstdin="$cpp"
  808. +         cppminus='-';
  809. +     else
  810. +         echo 'Nixed again...maybe "'"$cc"' -E -" will work...'
  811. +         $cc -E - <testcpp.c >testcpp.out 2>&1
  812. +         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  813. +         echo "Hooray, it works!  I was beginning to wonder."
  814. +         cppstdin="$cc -E"
  815. +         cppminus='-';
  816. +         else
  817. +         echo 'Nope...maybe "'"$cc"' -P" will work...'
  818. +         $cc -P <testcpp.c >testcpp.out 2>&1
  819. +         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  820. +             echo "Yup, that does."
  821. +             cppstdin="$cc -P"
  822. +             cppminus='';
  823. +         else
  824. +             echo 'Nope...maybe "'"$cc"' -P -" will work...'
  825. +             $cc -P - <testcpp.c >testcpp.out 2>&1
  826. +             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  827. +             echo "Yup, that does."
  828. +             cppstdin="$cc -P"
  829. +             cppminus='-';
  830. +             else
  831. +             echo 'Hmm...perhaps you already told me...'
  832. +             case "$cppstdin" in
  833. +             '') ;;
  834. +             *) $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1;;
  835. +             esac
  836. +             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  837. +                 echo "Hooray, you did!  I was beginning to wonder."
  838. +             else
  839. +                 echo 'Uh-uh.  Time to get fancy...'
  840. +                 cd ..
  841. +                 echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  842. +                 echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  843. +                 chmod 755 cppstdin
  844. +                 cppstdin=`pwd`/cppstdin
  845. +                 cppminus='';
  846. +                 cd UU
  847. +                 $cppstdin <testcpp.c >testcpp.out 2>&1
  848. +                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  849. +                 echo "Eureka!."
  850. +                 else
  851. +                 dflt=blurfl
  852. +                 $echo $n "No dice.  I can't find a C preprocessor.  Name one: $c"
  853. +                 rp='Name a C preprocessor:'
  854. +                 . myread
  855. +                 cppstdin="$ans"
  856. +                 $cppstdin <testcpp.c >testcpp.out 2>&1
  857. +                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  858. +                     echo "OK, that will do."
  859. +                 else
  860. +                     echo "Sorry, I can't get that to work.  Go find one."
  861. +                     exit 1
  862. +                 fi
  863. +                 fi
  864. +             fi
  865. +             fi
  866. +         fi
  867. +         fi
  868. +     fi
  869. +     fi
  870. + fi
  871. + rm -f testcpp.c testcpp.out
  872. + : get C preprocessor symbols handy
  873. + echo " "
  874. + echo $attrlist | $tr ' ' '\012' >Cppsym.know
  875. + $cat <<EOSS >Cppsym
  876. + $startsh
  877. + case "\$1" in
  878. + -l) list=true
  879. +     shift
  880. +     ;;
  881. + esac
  882. + unknown=''
  883. + case "\$list\$#" in
  884. + 1|2)
  885. +     for sym 
  886. +     do
  887. +     if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
  888. +         exit 0
  889. +     elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
  890. +         :
  891. +     else
  892. +         unknown="\$unknown \$sym"
  893. +     fi
  894. +     done
  895. +     set X \$unknown
  896. +     shift
  897. +     ;;
  898. + esac
  899. + case \$# in
  900. + 0) exit 1;;
  901. + esac
  902. + echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
  903. + #ifdef \1\\
  904. + exit 0; _ _ _ _\1\\     \1\\
  905. + #endif\\
  906. + /' >/tmp/Cppsym\$\$
  907. + echo exit 1 >>/tmp/Cppsym\$\$
  908. + $cppstdin $cppminus </tmp/Cppsym\$\$ >/tmp/Cppsym2\$\$
  909. + case "\$list" in
  910. + true) awk 'NF > 5 {print substr(\$6,2,100)}' </tmp/Cppsym2\$\$ ;;
  911. + *)
  912. +     sh /tmp/Cppsym2\$\$
  913. +     status=\$?
  914. +     ;;
  915. + esac
  916. + $rm -f /tmp/Cppsym\$\$ /tmp/Cppsym2\$\$
  917. + exit \$status
  918. + EOSS
  919. + chmod +x Cppsym
  920. + $eunicefix Cppsym
  921. + echo "Your C preprocessor defines the following symbols:"
  922. + Cppsym -l $attrlist >Cppsym.true
  923. + cat Cppsym.true
  924. + rmlist="$rmlist Cppsym Cppsym.know Cppsym.true"
  925. + : check for broken toupper/tolower
  926. + $echo ' '
  927. + case "$d_broke_ctype" in
  928. + "$define") ;;
  929. + "$undef") ;;
  930. + *)
  931. +     $echo "Testing your \"ctype\" conversion routines..."
  932. +     d_broke_ctype="$define"
  933. +     $cat >try.c <<'EOF'
  934. + #include <stdio.h>
  935. + #include <ctype.h>
  936. + #define my_tolower(c)    (isupper(c) ? (c) - 'A' + 'a' : (c))
  937. + #define my_toupper(c)    (islower(c) ? (c) - 'a' + 'A' : (c))
  938. + main()
  939. + {
  940. +     int i;
  941. +     for (i = 1 ; i <= 0x7F ; ++i) {
  942. +     if (my_tolower(i) != tolower(i) || my_toupper(i) != toupper(i))
  943. +         exit(1);
  944. +     }
  945. +     exit(0);
  946. + }
  947. + EOF
  948. +     $cc $ccflags -o try try.c >/dev/null 2>&1 \
  949. +     && ./try >/dev/null 2>&1 && d_broke_ctype="$undef"
  950. +     rm -f try.c try.o try core
  951. +     ;;
  952. + esac
  953. + case "$d_broke_ctype" in
  954. + "$define")    $echo "Using our own \"ctype\" conversions." ;;
  955. + "$undef")    $echo "Using standard system \"ctype\" conversions." ;;
  956. + esac
  957. + : see if chown can take -1 for mantaining the user/group unchanged
  958. + echo " "
  959. +  
  960. + case "$d_chown_neg1" in
  961. + undef)  dflt=n;;
  962. + *)  dflt=y;;
  963. + esac
  964. + $cat <<EOM
  965. + Does your system allow chown(-1, group) and chown(user, -1) to
  966. + not change the user or group respectively.  This is usually documented
  967. + in the chown manual page (man 2 chown). (Most POSIX and BSD systems can,
  968. + Xenix cannot)
  969. + EOM
  970. + rp="Does this system allow -1 as chown argument? [$dflt]"
  971. + $echo $n "$rp $c"
  972. + . myread
  973. + case "$ans" in
  974. + y*) d_chown_neg1="$define";;
  975. + *)  d_chown_neg1="$undef";;
  976. + esac
  977. + case "$d_content" in
  978. + "$define") dflt=y;;
  979. + "$undef")  dflt=n;;
  980. + *)       dflt=n;;
  981. + esac
  982. + $cat << EOM
  983. + Some modern Mail Transport Agents (mailers) support the Content-Length: header.
  984. + In doing so, they do not wish to have messages escaped to protect 'From ' lines
  985. + in the body of the message, among other strings.  Does the Mail Transport Agent
  986. + in use on this system honor the Content-Length: header?
  987. + EOM
  988. + echo " "
  989. + rp="Honors Content-Length: header? [$dflt]"
  990. + $echo $n "$rp $c"
  991. + . myread
  992. + case "$ans" in
  993. + y*) d_content="$define";;
  994. + *)  d_content="$undef";;
  995. + esac
  996.   : see if crypt exists
  997.   echo " "
  998.   if $contains '^crypt$' libc.list >/dev/null 2>&1; then
  999. ***************
  1000. *** 2678,2684 ****
  1001.   : index or strcpy
  1002.   echo " "
  1003.   case "$d_index" in
  1004. ! n) dflt=n;;
  1005.   *) dflt=y;;
  1006.   esac
  1007.   if $contains '^index$' libc.list >/dev/null 2>&1 ; then
  1008. --- 2874,2880 ----
  1009.   : index or strcpy
  1010.   echo " "
  1011.   case "$d_index" in
  1012. ! "$define") dflt=n;;
  1013.   *) dflt=y;;
  1014.   esac
  1015.   if $contains '^index$' libc.list >/dev/null 2>&1 ; then
  1016. ***************
  1017. *** 2913,2918 ****
  1018. --- 3109,3118 ----
  1019.           rp="$ispell_path options: [$dflt]"
  1020.           . myread
  1021.           ispell_options=$ans;
  1022. +         case "$ispell_options" in
  1023. +         'none') ispell_options=''
  1024. +              ;;
  1025. +         esac
  1026.           ;;
  1027.   esac
  1028.   : see if locale.h is in /usr/include
  1029. ***************
  1030. *** 3178,3219 ****
  1031.   
  1032.   
  1033.   if $test -f "$sendmail"; then
  1034. !     echo "You're running sendmail.  Setting noaddfrom, nocheckvalid, usedomain"
  1035.       d_noaddfrom="$define"
  1036. -     d_nocheckvalid="$define"
  1037.       d_usedomain="$undef"
  1038.   elif $test -f "$submit"; then
  1039. !     echo "You're running submit with MMDF.  Setting noaddfrom, nocheckvalid, usedomain"
  1040.       d_noaddfrom="$undef"
  1041. -     d_nocheckvalid="$define"
  1042.       d_usedomain="$define"
  1043.   elif $test -f "$execmail" -a "$d_mmdf" = "$define"; then
  1044. !     echo "You're running execmail with MMDF.  Setting noaddfrom, nocheckvalid, usedomain"
  1045.       d_noaddfrom="$undef"
  1046. -     d_nocheckvalid="$define"
  1047.       d_usedomain="$undef"
  1048.   else
  1049. -     case "$d_nocheckvalid" in
  1050. -     "$define") dflt=n;;
  1051. -     "$undef")  dflt=y;;
  1052. -     *)       dflt=y;;
  1053. -     esac
  1054. -     $cat << EOM
  1055. - Since you're not running sendmail or submit, should I check local user entered
  1056. - addresses against the valid mailboxes on this system?
  1057. - EOM
  1058. -     echo " "
  1059. -     rp="Would you like to check local addresses? [$dflt]"
  1060. -     $echo $n "$rp $c"
  1061. -     . myread
  1062. -     case "$ans" in
  1063. -     y*) d_nocheckvalid="$undef";;
  1064. -     *)  d_nocheckvalid="$define";;
  1065. -     esac
  1066.       if $test "$d_internet" = "$define"; then
  1067.           case "$d_usedomain" in
  1068.           "$define") dflt=y;;
  1069. --- 3378,3395 ----
  1070.   
  1071.   
  1072.   if $test -f "$sendmail"; then
  1073. !     echo "You're running sendmail.  Setting noaddfrom, usedomain"
  1074.       d_noaddfrom="$define"
  1075.       d_usedomain="$undef"
  1076.   elif $test -f "$submit"; then
  1077. !     echo "You're running submit with MMDF.  Setting noaddfrom, usedomain"
  1078.       d_noaddfrom="$undef"
  1079.       d_usedomain="$define"
  1080.   elif $test -f "$execmail" -a "$d_mmdf" = "$define"; then
  1081. !     echo "You're running execmail with MMDF.  Setting noaddfrom, usedomain"
  1082.       d_noaddfrom="$undef"
  1083.       d_usedomain="$undef"
  1084.   else
  1085.       if $test "$d_internet" = "$define"; then
  1086.           case "$d_usedomain" in
  1087.           "$define") dflt=y;;
  1088. ***************
  1089. *** 3333,3500 ****
  1090.       fi
  1091.   fi
  1092.   
  1093. - : see how we invoke the C preprocessor
  1094. - echo " "
  1095. - echo "Now, how can we feed standard input to your C preprocessor..."
  1096. - cat <<'EOT' >testcpp.c
  1097. - #define ABC abc
  1098. - #define XYZ xyz
  1099. - ABC.XYZ
  1100. - EOT
  1101. - echo 'Maybe "'"$cc"' -E" will work...'
  1102. - $cc -E <testcpp.c >testcpp.out 2>&1
  1103. - : try to force gcc preprocessor if that is the compiler they are using
  1104. - case $? in
  1105. - 0) cppstdin="$cc -E";;
  1106. - *) case "$cc" in
  1107. -     *gcc*)
  1108. -     cd ..
  1109. -     echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  1110. -     echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  1111. -     chmod 755 cppstdin
  1112. -     cppstdin=`pwd`/cppstdin
  1113. -     cppminus='';
  1114. -     cd UU
  1115. -     $cppstdin <testcpp.c >testcpp.out 2>&1
  1116. -     ;;
  1117. -     esac
  1118. -     ;;
  1119. - esac
  1120. - if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1121. -     echo "Yup, it does."
  1122. -     cppstdin="$cc -E"
  1123. -     cppminus='';
  1124. - else
  1125. -     echo 'Nope, maybe "'$cpp'" will work...'
  1126. -     $cpp <testcpp.c >testcpp.out 2>&1
  1127. -     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1128. -     echo "Yup, it does."
  1129. -     cppstdin="$cpp"
  1130. -     cppminus='';
  1131. -     else
  1132. -     echo 'No such luck...maybe "'$cpp' -" will work...'
  1133. -     $cpp - <testcpp.c >testcpp.out 2>&1
  1134. -     if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1135. -         echo "It works!"
  1136. -         cppstdin="$cpp"
  1137. -         cppminus='-';
  1138. -     else
  1139. -         echo 'Nixed again...maybe "'"$cc"' -E -" will work...'
  1140. -         $cc -E - <testcpp.c >testcpp.out 2>&1
  1141. -         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1142. -         echo "Hooray, it works!  I was beginning to wonder."
  1143. -         cppstdin="$cc -E"
  1144. -         cppminus='-';
  1145. -         else
  1146. -         echo 'Nope...maybe "'"$cc"' -P" will work...'
  1147. -         $cc -P <testcpp.c >testcpp.out 2>&1
  1148. -         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1149. -             echo "Yup, that does."
  1150. -             cppstdin="$cc -P"
  1151. -             cppminus='';
  1152. -         else
  1153. -             echo 'Nope...maybe "'"$cc"' -P -" will work...'
  1154. -             $cc -P - <testcpp.c >testcpp.out 2>&1
  1155. -             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1156. -             echo "Yup, that does."
  1157. -             cppstdin="$cc -P"
  1158. -             cppminus='-';
  1159. -             else
  1160. -             echo 'Hmm...perhaps you already told me...'
  1161. -             case "$cppstdin" in
  1162. -             '') ;;
  1163. -             *) $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1;;
  1164. -             esac
  1165. -             if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1166. -                 echo "Hooray, you did!  I was beginning to wonder."
  1167. -             else
  1168. -                 echo 'Uh-uh.  Time to get fancy...'
  1169. -                 cd ..
  1170. -                 echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
  1171. -                 echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
  1172. -                 chmod 755 cppstdin
  1173. -                 cppstdin=`pwd`/cppstdin
  1174. -                 cppminus='';
  1175. -                 cd UU
  1176. -                 $cppstdin <testcpp.c >testcpp.out 2>&1
  1177. -                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1178. -                 echo "Eureka!."
  1179. -                 else
  1180. -                 dflt=blurfl
  1181. -                 $echo $n "No dice.  I can't find a C preprocessor.  Name one: $c"
  1182. -                 rp='Name a C preprocessor:'
  1183. -                 . myread
  1184. -                 cppstdin="$ans"
  1185. -                 $cppstdin <testcpp.c >testcpp.out 2>&1
  1186. -                 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
  1187. -                     echo "OK, that will do."
  1188. -                 else
  1189. -                     echo "Sorry, I can't get that to work.  Go find one."
  1190. -                     exit 1
  1191. -                 fi
  1192. -                 fi
  1193. -             fi
  1194. -             fi
  1195. -         fi
  1196. -         fi
  1197. -     fi
  1198. -     fi
  1199. - fi
  1200. - rm -f testcpp.c testcpp.out
  1201. - : get C preprocessor symbols handy
  1202. - echo " "
  1203. - echo $attrlist | $tr ' ' '\012' >Cppsym.know
  1204. - $cat <<EOSS >Cppsym
  1205. - $startsh
  1206. - case "\$1" in
  1207. - -l) list=true
  1208. -     shift
  1209. -     ;;
  1210. - esac
  1211. - unknown=''
  1212. - case "\$list\$#" in
  1213. - 1|2)
  1214. -     for sym do
  1215. -     if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
  1216. -         exit 0
  1217. -     elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
  1218. -         :
  1219. -     else
  1220. -         unknown="\$unknown \$sym"
  1221. -     fi
  1222. -     done
  1223. -     set X \$unknown
  1224. -     shift
  1225. -     ;;
  1226. - esac
  1227. - case \$# in
  1228. - 0) exit 1;;
  1229. - esac
  1230. - echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
  1231. - #ifdef \1\\
  1232. - exit 0; _ _ _ _\1\\     \1\\
  1233. - #endif\\
  1234. - /' >/tmp/Cppsym\$\$
  1235. - echo exit 1 >>/tmp/Cppsym\$\$
  1236. - $cppstdin $cppminus </tmp/Cppsym\$\$ >/tmp/Cppsym2\$\$
  1237. - case "\$list" in
  1238. - true) awk 'NF > 5 {print substr(\$6,2,100)}' </tmp/Cppsym2\$\$ ;;
  1239. - *)
  1240. -     sh /tmp/Cppsym2\$\$
  1241. -     status=\$?
  1242. -     ;;
  1243. - esac
  1244. - $rm -f /tmp/Cppsym\$\$ /tmp/Cppsym2\$\$
  1245. - exit \$status
  1246. - EOSS
  1247. - chmod +x Cppsym
  1248. - $eunicefix Cppsym
  1249. - echo "Your C preprocessor defines the following symbols:"
  1250. - Cppsym -l $attrlist >Cppsym.true
  1251. - cat Cppsym.true
  1252. - rmlist="$rmlist Cppsym Cppsym.know Cppsym.true"
  1253.   : see if there is a putenv
  1254.   set putenv d_putenv
  1255.   eval $inlibc
  1256. --- 3509,3514 ----
  1257. ***************
  1258. *** 3840,3951 ****
  1259.       fi
  1260.   fi
  1261.   
  1262. - : see if we should include time.h, sys/time.h, or both
  1263. - cat <<'EOM'
  1264. -   
  1265. - Testing to see if we should include <time.h>, <sys/time.h> or both.
  1266. - I'm now running the test program...
  1267. - EOM
  1268. - $cat >try.c <<'EOCP'
  1269. - #ifdef I_TIME
  1270. - #include <time.h>
  1271. - #endif
  1272. - #ifdef I_SYSTIME
  1273. - #ifdef SYSTIMEKERNEL
  1274. - #define KERNEL
  1275. - #endif
  1276. - #include <sys/time.h>
  1277. - #endif
  1278. - main()
  1279. - {
  1280. -     struct tm foo;
  1281. - #ifdef S_TIMEVAL
  1282. -     struct timeval bar;
  1283. - #endif
  1284. -     if (foo.tm_sec == foo.tm_sec)
  1285. -     exit(0);
  1286. - #ifdef S_TIMEVAL
  1287. -     if (bar.tv_sec == bar.tv_sec)
  1288. -     exit(0);
  1289. - #endif
  1290. -     exit(1);
  1291. - }
  1292. - EOCP
  1293. - flags=''
  1294. - for s_timeval in '-DS_TIMEVAL' ''; do
  1295. -     for d_systimekernel in '' '-DSYSTIMEKERNEL'; do
  1296. -     for i_time in '-DI_TIME' ''; do
  1297. -         for i_systime in '-DI_SYSTIME' ''; do
  1298. -         case "$flags" in
  1299. -         '') echo "Trying $i_time $i_systime $d_systimekernel $s_timeval"
  1300. -             if $cc $ccflags $i_time $i_systime $d_systimekernel $s_timeval \
  1301. -                 try.c -o try >/dev/null 2>&1 ; then
  1302. -             set X $i_time $i_systime $d_systimekernel $s_timeval
  1303. -             shift
  1304. -             flags="$*"
  1305. -             echo "Succeeded with $flags"
  1306. -             fi
  1307. -             ;;
  1308. -         esac
  1309. -         done
  1310. -     done
  1311. -     done
  1312. - done
  1313. - case "$flags" in
  1314. - *SYSTIMEKERNEL*) d_systimekernel="$define";;
  1315. - *) d_systimekernel="$undef";;
  1316. - esac
  1317. - case "$flags" in
  1318. - *I_TIME*) i_time="$define";;
  1319. - *) i_time="$undef";;
  1320. - esac
  1321. - case "$flags" in
  1322. - *I_SYSTIME*) i_systime="$define";;
  1323. - *) i_systime="$undef";;
  1324. - esac
  1325. - $rm -f try.c try
  1326. - : see if there is a tzname
  1327. - set tzname d_tzname
  1328. - eval $inlibc
  1329. - if $test "$d_tzname" = "$undef"; then
  1330. -     set _tzname d_tzname
  1331. -     eval $inlibc
  1332. - fi
  1333. - timeincl=""
  1334. - if $test "$i_time" = define ; then
  1335. -     timeincl="/usr/include/time.h"
  1336. - fi
  1337. - if $test "$i_systime" = define ; then
  1338. -     timeincl="$timeincl /usr/include/sys/time.h"
  1339. - fi
  1340. - $cat $timeincl /dev/null | $cppstdin $cppminus > try.c 2>&1
  1341. - if $contains 'tz_minuteswest' try.c > /dev/null 2>&1 ; then
  1342. -     echo "You have tz_minuteswest defined in $timeincl rather than timezone."
  1343. -     d_tz_min="$define"
  1344. - else
  1345. -     echo "You have timezone defined in $timeincl rather than tz_minuteswest."
  1346. -     d_tz_min="$undef"
  1347. - fi
  1348. - #    try alternate test for nm commands that have problems
  1349. - #    with data items being parsed
  1350. - if Cppsym ultrix ; then
  1351. -     echo "running Ultrix, will not test for tzname in $timeincl"
  1352. - else
  1353. -     if $test "$d_tzname" = "$undef"; then
  1354. -     if $contains tzname try.c >/dev/null 2>&1 ; then
  1355. -         echo "tzname found in $timeincl"
  1356. -         d_tzname="$define"
  1357. -     fi
  1358. -     fi
  1359. - fi
  1360. - $rm -f try.c
  1361.   : check for valid reply/to fields
  1362.   case "$d_useembed" in
  1363.   "$define")    dflt=y;;
  1364. --- 3854,3859 ----
  1365. ***************
  1366. *** 4018,4023 ****
  1367. --- 3926,3996 ----
  1368.           ;;
  1369.   *)        d_usegetdom="$undef";;
  1370.   esac;
  1371. + : see if we should include time.h, sys/time.h, or both
  1372. + cat <<'EOM'
  1373. +   
  1374. + Testing to see if we should include <time.h>, <sys/time.h> or both.
  1375. + I'm now running the test program...
  1376. + EOM
  1377. + $cat >try.c <<'EOCP'
  1378. + #ifdef I_TIME
  1379. + #include <time.h>
  1380. + #endif
  1381. + #ifdef I_SYSTIME
  1382. + #ifdef SYSTIMEKERNEL
  1383. + #define KERNEL
  1384. + #endif
  1385. + #include <sys/time.h>
  1386. + #endif
  1387. + main()
  1388. + {
  1389. +     struct tm foo;
  1390. + #ifdef S_TIMEVAL
  1391. +     struct timeval bar;
  1392. + #endif
  1393. +     if (foo.tm_sec == foo.tm_sec)
  1394. +     exit(0);
  1395. + #ifdef S_TIMEVAL
  1396. +     if (bar.tv_sec == bar.tv_sec)
  1397. +     exit(0);
  1398. + #endif
  1399. +     exit(1);
  1400. + }
  1401. + EOCP
  1402. + flags=''
  1403. + for s_timeval in '-DS_TIMEVAL' ''; do
  1404. +     for d_systimekernel in '' '-DSYSTIMEKERNEL'; do
  1405. +     for i_time in '-DI_TIME' ''; do
  1406. +         for i_systime in '-DI_SYSTIME' ''; do
  1407. +         case "$flags" in
  1408. +         '') echo "Trying $i_time $i_systime $d_systimekernel $s_timeval"
  1409. +             if $cc $ccflags $i_time $i_systime $d_systimekernel $s_timeval \
  1410. +                 try.c -o try >/dev/null 2>&1 ; then
  1411. +             set X $i_time $i_systime $d_systimekernel $s_timeval
  1412. +             shift
  1413. +             flags="$*"
  1414. +             echo "Succeeded with $flags"
  1415. +             fi
  1416. +             ;;
  1417. +         esac
  1418. +         done
  1419. +     done
  1420. +     done
  1421. + done
  1422. + case "$flags" in
  1423. + *SYSTIMEKERNEL*) d_systimekernel="$define";;
  1424. + *) d_systimekernel="$undef";;
  1425. + esac
  1426. + case "$flags" in
  1427. + *I_TIME*) i_time="$define";;
  1428. + *) i_time="$undef";;
  1429. + esac
  1430. + case "$flags" in
  1431. + *I_SYSTIME*) i_systime="$define";;
  1432. + *) i_systime="$undef";;
  1433. + esac
  1434. + $rm -f try.c try
  1435.   : see if utime.h is in includepath
  1436.   echo " "
  1437.   i_utime=`loc utime.h "" /usr/include $includepath`
  1438. ***************
  1439. *** 4049,4054 ****
  1440. --- 4022,4030 ----
  1441.           if $test "`/bin/universe`" = "att" ; then
  1442.           d_utimbuf="$undef"
  1443.           echo "I will use my 'utimbuf' structure..."
  1444. +         else
  1445. +         d_utimbuf="$define"
  1446. +         echo "You have the 'utimbuf' structure..."
  1447.               fi
  1448.       else
  1449.         if $test "$d_utimbuf" != "$define"; then
  1450. ***************
  1451. *** 4133,4138 ****
  1452. --- 4109,4125 ----
  1453.       i_memory="$undef"
  1454.   fi
  1455.   
  1456. + : see if stdarg.h is in includepath
  1457. + echo " "
  1458. + i_stdarg=`loc stdarg.h "" /usr/include $includepath`
  1459. + if $test -n "$i_stdarg"; then
  1460. +     echo "Found <stdarg.h>"
  1461. +     i_stdarg="$define"
  1462. + else
  1463. +     echo "Did not find <stdarg.h>"
  1464. +     i_stdarg="$undef"
  1465. + fi
  1466.   : see if unistd.h is in includepath
  1467.   echo " "
  1468.   i_unistd=`loc unistd.h "" /usr/include $includepath`
  1469. ***************
  1470. *** 4628,4633 ****
  1471. --- 4615,4723 ----
  1472.   else
  1473.       use_pmake=n
  1474.   fi
  1475. + : figure out timezone handling
  1476. + # timezone handling part 1 of 4 - setup test files
  1477. + cp ../lib/get_tz.c try.c 2>/dev/null \
  1478. +     || $echo "Oh no!  I cannot find the \"lib/get_tz.c\" file."
  1479. + cat >defs.h <<EOF
  1480. + #$i_time I_TIME
  1481. + #$i_systime I_SYSTIME
  1482. + #include <stdio.h>
  1483. + #include <sys/types.h>
  1484. + int get_tz_mins();
  1485. + char *get_tz_name();
  1486. + #ifdef TEST_FOR_TZMINS
  1487. + #define TZNAME_USE_TZNAME
  1488. + #ifdef tzname
  1489. + # undef tzname
  1490. + #endif
  1491. + #define tzname tzfoo
  1492. + char *tzfoo[] = { "FOO", "BAR" };
  1493. + main() { printf("%d\n", get_tz_mins((struct tm *)0)); exit(0); }
  1494. + #else
  1495. + main() { printf("%s\n", get_tz_name((struct tm *)0)); exit(0); }
  1496. + #endif
  1497. + EOF
  1498. + # timezone handling part 2 of 4 - timezone offsets configuration
  1499. + $echo " "
  1500. + it_worked=0
  1501. + if $test -f try.c ; then
  1502. +     $echo "Trying to figure out how to get timezone offsets."
  1503. +     dflt_handling=$tzmins_handling
  1504. +     for tzmins_handling in DFLT TM_TZADJ TM_GMTOFF TZAZ_GLOBAL TZ_GLOBAL \
  1505. +         FTIME TIMEOFDAY ERROR ; do
  1506. +     case "$tzmins_handling" in
  1507. +         DFLT)        tzmins_handling=$dflt_handling ;;
  1508. +         ERROR)        tzmins_handling=$dflt_handling ; break ;;
  1509. +         $dflt_handling)    tzmins_handling= ;;
  1510. +     esac
  1511. +     $test "$tzmins_handling" = "" && continue
  1512. +     $echo "Trying -DTZMINS_USE_$tzmins_handling"
  1513. +     $cc -DTZMINS_USE_$tzmins_handling -DTEST_FOR_TZMINS \
  1514. +         $ccflags try.c -o try >/dev/null 2>&1 || continue
  1515. +     ./try >try.out 2>&1 || continue
  1516. +     $echo "Alright!  That seems to have worked."
  1517. +     dflt=y
  1518. +     rp="Are you `cat try.out` mins west of the prime meridian? [$dflt]"
  1519. +     $echo $n "$rp $c"
  1520. +     . myread
  1521. +     case "$ans" in
  1522. +         N*|n*)    $echo "OK...I'll keep trying." ;;
  1523. +         *)    it_worked=1 ; break ;;
  1524. +     esac
  1525. +     done
  1526. + fi
  1527. + if $test $it_worked -ne 1 ; then
  1528. +     $echo "I cannot figure out how to get timezone offsets."
  1529. +     if $test "$tzmins_handling" != "" ; then
  1530. +     $echo "You said \"$tzmins_handling\" worked last time so I'll use that."
  1531. +     else
  1532. +     $echo "You are going to have to manually set \"tzmins_handling\"."
  1533. +     fi
  1534. + fi
  1535. + # timezone handling part 3 of 4 - timezone names configuration
  1536. + $echo " "
  1537. + it_worked=0
  1538. + if $test "$tzmins_handling" != "" -a -f try.c ; then
  1539. +     $echo "Trying to figure out how to get timezone names."
  1540. +     dflt_handling=$tzname_handling
  1541. +     for tzname_handling in DFLT TM_NAME TM_ZONE TZNAME TIMEZONE ERROR ; do
  1542. +     case "$tzname_handling" in
  1543. +         DFLT)        tzname_handling=$dflt_handling ;;
  1544. +         ERROR)        tzname_handling=$dflt_handling ; break ;;
  1545. +         $dflt_handling)    tzname_handling= ;;
  1546. +     esac
  1547. +     $test "$tzname_handling" = "" && continue
  1548. +     $echo "Trying -DTZNAME_USE_$tzname_handling"
  1549. +     $cc -DTZMINS_USE_$tzmins_handling -DTZNAME_USE_$tzname_handling \
  1550. +         $ccflags try.c -o try >/dev/null 2>&1 || continue
  1551. +     ./try >try.out 2>&1 || continue
  1552. +     $echo "Alright!  That seems to have worked."
  1553. +     dflt=y
  1554. +     rp="Is \"`cat try.out`\" your local timezone name? [$dflt]"
  1555. +     $echo $n "$rp $c"
  1556. +     . myread
  1557. +     case "$ans" in
  1558. +         N*|n*)    $echo "OK...I'll keep trying." ;;
  1559. +         *)    it_worked=1 ; break ;;
  1560. +     esac
  1561. +     done
  1562. + fi
  1563. + if $test $it_worked -ne 1 ; then
  1564. +     $echo "I cannot figure out how to get timezone names."
  1565. +     if $test "$tzname_handling" != "" ; then
  1566. +     $echo "You said \"$tzname_handling\" worked last time so I'll use that."
  1567. +     else
  1568. +     $echo "You are going to have to manually set \"tzname_handling\"."
  1569. +     fi
  1570. + fi
  1571. + # timezone handling part 4 of 4 - cleanup
  1572. + $rm -f defs.h try.c try.o try try.out
  1573.   
  1574.   : the "config.over" file can be used to patch configuration changes
  1575.   if test -f ../config.over ; then
  1576. ***************
  1577. *** 4753,4762 ****
  1578.   execmail='$execmail'
  1579.   libswanted='$libswanted'
  1580.   c_date='$c_date'
  1581. - d_altcheck='$d_altcheck'
  1582.   d_ascii='$d_ascii'
  1583.   d_calendar='$d_calendar'
  1584.   calendar='$calendar'
  1585.   d_content='$d_content'
  1586.   d_crypt='$d_crypt'
  1587.   cryptlib='$cryptlib'
  1588. --- 4843,4853 ----
  1589.   execmail='$execmail'
  1590.   libswanted='$libswanted'
  1591.   c_date='$c_date'
  1592.   d_ascii='$d_ascii'
  1593. + d_broke_ctype='$d_broke_ctype'
  1594.   d_calendar='$d_calendar'
  1595.   calendar='$calendar'
  1596. + d_chown_neg1='$d_chown_neg1'
  1597.   d_content='$d_content'
  1598.   d_crypt='$d_crypt'
  1599.   cryptlib='$cryptlib'
  1600. ***************
  1601. *** 4797,4803 ****
  1602.   d_newauto='$d_newauto'
  1603.   d_noaddfrom='$d_noaddfrom'
  1604.   d_usedomain='$d_usedomain'
  1605. - d_nocheckvalid='$d_nocheckvalid'
  1606.   d_noxheader='$d_noxheader'
  1607.   d_pidcheck='$d_pidcheck'
  1608.   d_ptem='$d_ptem'
  1609. --- 4888,4893 ----
  1610. ***************
  1611. *** 4831,4838 ****
  1612.   tempnamc='$tempnamc'
  1613.   d_termio='$d_termio'
  1614.   d_termios='$d_termios'
  1615. - d_tz_min='$d_tz_min'
  1616. - d_tzname='$d_tzname'
  1617.   d_useembed='$d_useembed'
  1618.   d_utimbuf='$d_utimbuf'
  1619.   d_vfork='$d_vfork'
  1620. --- 4921,4926 ----
  1621. ***************
  1622. *** 4844,4849 ****
  1623. --- 4932,4938 ----
  1624.   mydomain='$mydomain'
  1625.   autohostname='$autohostname'
  1626.   i_memory='$i_memory'
  1627. + i_stdarg='$i_stdarg'
  1628.   i_stdlib='$i_stdlib'
  1629.   i_time='$i_time'
  1630.   i_systime='$i_systime'
  1631. ***************
  1632. *** 4893,4898 ****
  1633. --- 4982,4989 ----
  1634.   shsharp='$shsharp'
  1635.   sharpbang='$sharpbang'
  1636.   tmpdir='$tmpdir'
  1637. + tzmins_handling='$tzmins_handling'
  1638. + tzname_handling='$tzname_handling'
  1639.   use_pmake='$use_pmake'
  1640.   xencf='$xencf'
  1641.   xenlf='$xenlf'
  1642.  
  1643. Index: MANIFEST
  1644. *** ../elm2.4/MANIFEST    Sun Jun  6 14:24:46 1993
  1645. --- MANIFEST    Tue Aug  3 15:20:41 1993
  1646. ***************
  1647. *** 91,96 ****
  1648. --- 91,97 ----
  1649.   lib/expand.c
  1650.   lib/figadrssee.c
  1651.   lib/gcos_name.c
  1652. + lib/get_tz.c
  1653.   lib/getaddrfrm.c
  1654.   lib/getarpdate.c
  1655.   lib/getfullnam.c
  1656. ***************
  1657. *** 119,124 ****
  1658. --- 120,126 ----
  1659.   lib/realfrom.c
  1660.   lib/remfirstwd.c
  1661.   lib/reverse.c
  1662. + lib/rfc822tlen.c
  1663.   lib/safemalloc.c
  1664.   lib/shiftlower.c
  1665.   lib/strfcpy.c
  1666.  
  1667. Index: Patchlist
  1668. *** ../elm2.4/Patchlist    Sun Jun  6 14:24:46 1993
  1669. --- Patchlist    Sun Sep 19 19:48:55 1993
  1670. ***************
  1671. *** 1,4 ****
  1672. --- 1,285 ----
  1673.   =========================================================
  1674. + Patch Set - Patches 23a through 23d: Sun Sep 19 19:48:31 EDT 1993
  1675. + Elm 2.4PL22 -> Elm 2.4PL23
  1676. + Write options to elmrc even if their values are empty strings.
  1677. + Rationalize code that reads and writes weedouts and alternates.
  1678. + From: chip%fin@myrddin.sybus.com
  1679. + Correct problem in fetch_alias() with alias record fixup that caused
  1680. + core dump on machines with pointers larger than int.  This problem
  1681. + was reported on comp.mail.elm by Richard Eckman and Jim Brown.  Simplify
  1682. + get_one_alias() by having it use fetch_alias().
  1683. + break_down_tolist() tried to blindly split address lists at "," which
  1684. + caused bogus results with addreses that had a comma inside a comment
  1685. + or quoted text, such as "user@domain (Last, First)".  This patch steps
  1686. + through the address in quanta of RFC-822 tokens when searching for a
  1687. + delimiting comma.  It also adds "rfc822_toklen()" to the library to
  1688. + get that length.
  1689. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1690. + This fixes a bug in the MIME code.  Include_Part() uses expand_env()
  1691. + to expand the include file name, but since expand_env() is destructive
  1692. + [it uses strtok()] the file name gets corrupted, and the "Content-Name"
  1693. + header can contain a bogus value.  The easy fix would be a one-line
  1694. + hack to Include_Part to use a temporary buffer.  This patch does not
  1695. + implement the easy fix.  *Every* place expand_env() is used, its side
  1696. + effects cause problems.  I think the right fix is to make expand_env()
  1697. + non-destructive (i.e. have it duplicate the input to a temporary buffer
  1698. + and work from there).  The attached patch modifies expand_env() in
  1699. + that manner, and eliminates all of the `copy to a temporary buffer'
  1700. + calls that precede it throughout elm.
  1701. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1702. + I have been repetedly crashing elm 2.4.22 until I discovered that a
  1703. + test for failing to open the system elmrc file is mising. This could
  1704. + usefully be added in read_rc.c. Version info and patch follows:
  1705. + From: "C.R. Ritson" <C.R.Ritson@newcastle.ac.uk>
  1706. + Greatly simplified "lib/striparens.c" to use new rfc822_toklen() routine.
  1707. + This cut more than 50% out of the object size.  Also added _TEST case.
  1708. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1709. + When resyncing aliases from elm, and there was aliases to delete,
  1710. + the alias.pag file could be corrupted since file_offset wasn't set to zero.
  1711. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1712. + A long-standing bug of handling replies to VMS systems.
  1713. + Original "From: " -line is of format:
  1714. +     From: "NAME \"Real Name\"" <USERNAME@vms-system>
  1715. + (PMDF mailer)
  1716. +     Anyway,  parse_arpa_who()  strips quotes too cleanly
  1717. + resulting data:
  1718. +     NAME \"Real Name\
  1719. + which, when put into parenthesis, becomes:
  1720. +     (NAME \"Real Name\)
  1721. + which in its turn lacks closing `)'
  1722. + Patch of  lib/parsarpwho.c  fixes that.
  1723. + strtokq() started one position too late to search for next double-quote (") char.
  1724. + Another one-off (chops off trailing comment character, quote or not..)  in   src/reply.c
  1725. + From:    Matti Aarnio <mea@utu.fi>
  1726. + Three changes to expand_env() in src/read_rc.c:  make it non-destructive,
  1727. + have it return an error code instead of bailing out, and add a buffer
  1728. + size argument to avoid overwritting the destination.  The first is to
  1729. + avoid all of the gymnastics Elm needed to go through (and occasionally
  1730. + forgot to go through) to protect the value handed to expand_env().
  1731. + The second is because expand_env() was originally written to support
  1732. + "elmrc" and bailing out was a reasonable thing to do there -- but not
  1733. + in the other places where it has since been used.  The third is just
  1734. + a matter of practicing safe source code.
  1735. + This patch changes all invocations to expand_env() to eliminate making
  1736. + temporary copies (now that the routine is non-destructive) and to pass
  1737. + in a destination length.  Since expand_env() no longer bails out on
  1738. + error, a do_expand_env() routine was added to src/read_rc.c handle
  1739. + this.  Moreover, the error message now gives some indication of what
  1740. + the problem is rather than just saying "can't expand".
  1741. + Gratitous change to src/editmsg.c renaming filename variables to
  1742. + clarify the purpose.
  1743. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1744. + [ Patch description ]
  1745. + Update the example elmrc and move a couple out of order variable
  1746. + descriptions.
  1747. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1748. + Handle reply-to in batch mode.
  1749. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1750. + In fastmail, if environment variable $REPLYTO is set, use it as
  1751. + default Reply-To.  Also, eliminate unnecessary strlen() calls.
  1752. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1753. + Support aliases both on 64 bit and 32 bit machines at the same time.
  1754. + From: Dan Mosedale <mosedale@genome.stanford.edu>
  1755. + Spaces in weedout strings wasn't preserved ("From " became "From").
  1756. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1757. + Added text about how the weedout list works w.r.t From: and From_
  1758. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1759. + default_weedlist() can't use pmalloc, because weedout() calls free when
  1760. + it encounters *clear-weed-list*.
  1761. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1762. + The NLS messages for elm -h output didn't have the -i or -t options.
  1763. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1764. + The message CannotInitErrorExpanding was called CantExpandEnvVar in s_elm.m.
  1765. + Change it for consistency.
  1766. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1767. + Since it was not intended that varargs.h and stdarg.h were
  1768. + included simultaneously there may be colliding definitions
  1769. + on some systems if you use a standard C compiler. If both
  1770. + of these headers are included the compiler has no way to
  1771. + know which definitions to use.
  1772. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1773. + "*clear-weed-list*" in elmrc was wiped out when one saved the options in elm.
  1774. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1775. + When STDC is used on Convex the feof() function is defined as
  1776. + a true library routine in the header files and moreover the
  1777. + library routine also leaks royally. It returns always 1!!
  1778. + So we have to use a macro. Convex naturally does not provide
  1779. + you with one though if you are using a STDC compiler. So we
  1780. + have to include one.
  1781. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1782. + Removed bogus string lockfile.
  1783. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1784. + The last character of a form field gets zapped if more characters than
  1785. + the field expects are entered.
  1786. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1787. + Patch for Elm 2.4 PL22 to correct handling of SIGWINCH signals on
  1788. + DecStations with Ultrix 4.2.
  1789. + The problem was that elm running in an xterm exits silently when the
  1790. + window is resize. This was caused by incorrect signal handling for BSD.
  1791. + From: vogt@isa.de
  1792. + Implement new timezone handling.  New file lib/get_tz.c with new timezone
  1793. + routines.  Added new TZMINS_USE_xxxxxx and TZNAME_USE_xxxxxx configuration
  1794. + definitions.  Obsoleted TZNAME, ALTCHECK, and TZ_MINUTESWEST configuration
  1795. + definitions.  Updated Configure.  Modified lib/getarpdate.c and
  1796. + lib/strftime.c to use new timezone routines.
  1797. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1798. + Add proper casts to free() calls to suppress warnings.
  1799. + Properly cast return types.
  1800. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1801. + Added -d option to elmalias.
  1802. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1803. + Elm tries to replace the system toupper() and tolower() on current
  1804. + BSD systems, which is unnecessary.  Even worse, the replacements
  1805. + collide during linking with routines in isctype.o.  This patch adds
  1806. + a Configure test to determine whether replacements are really needed
  1807. + (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  1808. + globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  1809. + there.  Inclusion of <ctype.h> was removed from *all* the individual
  1810. + files, and the toupper() and tolower() routines in lib/opt_utils.c
  1811. + were dropped.
  1812. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1813. + Fix signal type for 386bsd
  1814. + From: Scott Mace <smace@freefall.cdrom.com>
  1815. + When an environment variable was given as the tmpdir definition the src
  1816. + and dest overlapped in expand_env.  This made elm produce a garbage
  1817. + expansion because expand_env cannot cope with overlapping src and
  1818. + dest.  I added a new variable raw_temp_dir to keep src and dest not to
  1819. + overlap.
  1820. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1821. + I compiled elm 2.4.22 with Purify 2 and fixed some memory leaks and
  1822. + some reads of unitialized memory.
  1823. + From: vogt@isa.de
  1824. + A change to answer:s mail command to be like those of elm and filter.
  1825. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1826. + Elm was failing to write an empty "alternatives" list to elmrc.
  1827. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1828. + Usage message for elmalias changed.
  1829. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1830. + Correct typo and use hard spaces within quotes in *clear-weed-list* note.
  1831. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1832. + fix where checkalias doesn't fully expand multi-database aliases
  1833. + From: Steve Wolf <woof@atl.hp.com>
  1834. + The macro ctrl(c) did not work correctly for a DEL character
  1835. + neither did it make the backward mapping from a control char
  1836. + to the letter that is normally used with an up-arrow prefix
  1837. + to represent the control character.
  1838. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1839. + Don't declare _exit() if <unistd.h> already did it.
  1840. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1841. + Test ANSI_C, not __STDC__ (which is not set on e.g. AIX).
  1842. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1843. + The ANSI version of varargs is "stdarg", not "stdargs".
  1844. + From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg)
  1845. + Added some documentation for textencoding variable.
  1846. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1847. + more purify found errors
  1848. + From: vogt@isa.de
  1849. + Add missing parens
  1850. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1851. + Fix problem where deleting to previous line caused duplication due to the
  1852. + file being opened for append (in append mode, all writes are to the end of
  1853. + file regardless of the file pointer).
  1854. + From: pdc@lunch.asd.sgi.com (Paul Close)
  1855. + have Writechar() backspace over the left edge of the screen to the end
  1856. + of the previous line if the current line is not the first line on the
  1857. + screen.
  1858. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1859. + Call to expand_env for pager should be call to do_expand_env.
  1860. + temp_dir not initialized.
  1861. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1862. + Try splitting chown into two calls to set group on systems where
  1863. + chown of owner is restricted.
  1864. + From: Syd
  1865. + strtokq was called with the wrong number of parameters.
  1866. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1867. + Add ability for elmalias to determine HOME if missing from the environment.
  1868. + From: chip@chinacat.unicom.com (Chip Rosenthal)
  1869. + Changed a few buffers from LONG_STRING (512) to VERY_LONG_STRING
  1870. + to avoid long header lines overflowing the allocated space. At
  1871. + least 1024 bytes should be allowed in any header line/field.
  1872. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1873. + Here's some more patch stuff for undersize buffers for header lines.
  1874. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1875. + Fix a code portability problem with Convex.
  1876. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1877. + I found a few places more where the code was missing a call
  1878. + to fflush() before it called unlock() and fclose()/exit()
  1879. + right after unlocking the mail drop.
  1880. + From: Jukka Ukkonen <ukkonen@csc.fi>
  1881. + Erroneous Content-Length:s that ended up beyond the end of the folder
  1882. + wasn't checked for, so the rest of the folder became one big message.
  1883. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1884. + expand() didn't read the global rc file if the user elmrc didn't exist or
  1885. + didn't have an entry for maildir.
  1886. + From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  1887. + Conform textencoding addition to style standard.
  1888. + From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  1889. + Although it doesnt solve the limit/resync problem of new
  1890. + messages, allow them to be accessed anyway.
  1891. + From: austig@solan.unit.no
  1892. + =========================================================
  1893.   Patch Set - Patches 22 through 22: Sun Jun  6 14:09:37 EDT 1993
  1894.   Elm 2.4PL21 -> Elm 2.4PL22
  1895.   
  1896.  
  1897. Index: config.h.SH
  1898. *** ../elm2.4/config.h.SH    Sat May  8 15:41:40 1993
  1899. --- config.h.SH    Sun Sep 26 21:43:42 1993
  1900. ***************
  1901. *** 107,123 ****
  1902.    */
  1903.   #define        CONFIGURE_DATE    "$c_date"
  1904.   
  1905. - /* ALTCHECK:
  1906. -  *    This symbol, if defined, means that altzone exists.
  1907. -  */
  1908. - #$d_altcheck ALTCHECK        /**/
  1909.   /* ASCII_CTYPE:
  1910.    *    This symbol, if defined, indicates that the ctype functions and
  1911.    *    macros are ASCII specific and not 8-bit clean.
  1912.    */
  1913.   #$d_ascii    ASCII_CTYPE    /**/
  1914.   
  1915.   /* ENABLE_CALENDAR:
  1916.    *    This symbol, if defined, indicates that the calendar feature
  1917.    *    should be supported.
  1918. --- 107,124 ----
  1919.    */
  1920.   #define        CONFIGURE_DATE    "$c_date"
  1921.   
  1922.   /* ASCII_CTYPE:
  1923.    *    This symbol, if defined, indicates that the ctype functions and
  1924.    *    macros are ASCII specific and not 8-bit clean.
  1925.    */
  1926.   #$d_ascii    ASCII_CTYPE    /**/
  1927.   
  1928. + /* BROKE_CTYPE:
  1929. +  *    This symbol, if defined, indicates that toupper and tolower
  1930. +  *    routines/macros are not safe to use.
  1931. +  */
  1932. + #$d_broke_ctype    BROKE_CTYPE    /**/
  1933.   /* ENABLE_CALENDAR:
  1934.    *    This symbol, if defined, indicates that the calendar feature
  1935.    *    should be supported.
  1936. ***************
  1937. *** 125,130 ****
  1938. --- 126,135 ----
  1939.   #$d_calendar    ENABLE_CALENDAR    /**/
  1940.   #define dflt_calendar_file    "$calendar"    
  1941.   
  1942. + /* CHOWN_NEG1:
  1943. +  */
  1944. + #$d_chown_neg1    CHOWN_NEG1    /**/
  1945.   /* DONT_ESCAPE_MESSAGES:
  1946.    *    This symbol, if defined, indicates that a binary capable MTA is in use
  1947.    *    that honors the content-length header and no message constructs need
  1948. ***************
  1949. *** 307,319 ****
  1950.    *    This symbol, if defined, indicates that elm should add
  1951.    *    the domain name to our address
  1952.    */
  1953. - /* NOCHECK_VALIDNAME:
  1954. -  *    This symbol, if defined, indicates that elm should not
  1955. -  *    check the addresses against mailboxes on this system.
  1956. -  */
  1957.   #$d_noaddfrom    DONT_ADD_FROM /**/
  1958.   #$d_usedomain    USE_DOMAIN /**/
  1959. - #$d_nocheckvalid NOCHECK_VALIDNAME    /**/
  1960.   
  1961.   /* NO_XHEADER:
  1962.    *    This symbol, if defined, will not automatically add "X-Mailer:"
  1963. --- 312,319 ----
  1964. ***************
  1965. *** 469,485 ****
  1966.   
  1967.   #$d_termio    TERMIO        /**/
  1968.   
  1969. - /* TZ_MINUTESWEST:
  1970. -  *    This symbol is defined if this system uses tz_minutes west
  1971. -  *    in time.h instead of timezone.  Only for BSD Systems
  1972. -  */
  1973. - /* TZNAME:
  1974. -  *    This symbol, if defined, indicates that extern char *tzname[] exists.
  1975. -  */
  1976. - #$d_tz_min    TZ_MINUTESWEST     /**/
  1977. - #$d_tzname    TZNAME    /**/
  1978.   /* USE_EMBEDDED_ADDRESSES:
  1979.    *    This symbol, if defined, indicates that replyto: and from:
  1980.    *    headers can be trusted.
  1981. --- 469,474 ----
  1982. ***************
  1983. *** 528,533 ****
  1984. --- 517,528 ----
  1985.    */
  1986.   #$i_memory    I_MEMORY    /**/
  1987.   
  1988. + /* I_STDARG:
  1989. +  *    This symbol, if defined, indicates that the file stdarg.h
  1990. +  *    should be included instead of varargs
  1991. +  */
  1992. + #$i_stdarg    I_STDARG    /**/
  1993.   /* I_STDLIB:
  1994.    *    This symbol, if defined, indicates that the file stdlib.h
  1995.    *    should be included instead of declaring the stdlib routines.
  1996. ***************
  1997. *** 588,593 ****
  1998. --- 583,607 ----
  1999.    */
  2000.   #define    SIGHAND_TYPE    $sigtype
  2001.   
  2002. + /* TZMINS_USE_xxxxxx:
  2003. +  *    Specify how to get timezone offset.  Possible values are:
  2004. +  *         TZMINS_USE_TM_TZADJ    use (struct tm *)->tm_tzadj
  2005. +  *         TZMINS_USE_TM_GMTOFF    use (struct tm *)->tm_gmtoff
  2006. +  *         TZMINS_USE_TZAZ_GLOBAL    use "timezone, altzone" externals
  2007. +  *         TZMINS_USE_TZ_GLOBAL    use "timezone" external
  2008. +  *         TZMINS_USE_FTIME    use ftime() function
  2009. +  *         TZMINS_USE_TIMEOFDAY    use gettimeofday() function
  2010. +  */
  2011. + /* TZNAME_USE_xxxxxx:
  2012. +  *    Specify how to get timezone name.  Possible values are:
  2013. +  *         TZNAME_USE_TM_NAME    use (struct tm *)->tm_name
  2014. +  *         TZNAME_USE_TM_ZONE    use (struct tm *)->tm_zone
  2015. +  *         TZNAME_USE_TZNAME    use "tzname[]" external
  2016. +  *         TZNAME_USE_TIMEZONE    use timezone() function
  2017. +  */
  2018. + #define TZMINS_USE_$tzmins_handling
  2019. + #define TZNAME_USE_$tzname_handling
  2020.   /* XENIX:
  2021.    *    This symbol, if defined, indicates this is a Xenix system,
  2022.    *    for knocking  out the far keyword in selected places.
  2023.  
  2024. Index: doc/Alias.guide
  2025. Prereq: 5.5
  2026. *** ../elm2.4/doc/Alias.guide    Sun Apr 11 21:45:22 1993
  2027. --- doc/Alias.guide    Mon Jul 19 23:02:25 1993
  2028. ***************
  2029. *** 1,4 ****
  2030. ! .\" @(#)$Id: Alias.guide,v 5.5 1993/04/12 01:45:22 syd Exp $
  2031.   .\"
  2032.   .\"  A guide to the ELM alias system and so on.
  2033.   .\"  format with:
  2034. --- 1,4 ----
  2035. ! .\" @(#)$Id: Alias.guide,v 5.7 1993/07/20 03:02:11 syd Exp $
  2036.   .\"
  2037.   .\"  A guide to the ELM alias system and so on.
  2038.   .\"  format with:
  2039. ***************
  2040. *** 11,16 ****
  2041. --- 11,24 ----
  2042.   .\"    Syd Weinstein        elm@DSI.COM (dsinc!elm)
  2043.   .\"
  2044.   .\"  $Log: Alias.guide,v $
  2045. + .\" Revision 5.7  1993/07/20  03:02:11  syd
  2046. + .\" drop useless reference to Elm address validation
  2047. + .\" From: Syd
  2048. + .\"
  2049. + .\" Revision 5.6  1993/07/20  02:16:26  syd
  2050. + .\" Explain that newalias for global takes -g argument
  2051. + .\" From: Syd via request from Manfred Ebery
  2052. + .\"
  2053.   .\" Revision 5.5  1993/04/12  01:45:22  syd
  2054.   .\" Update for quotes
  2055.   .\" From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  2056. ***************
  2057. *** 282,289 ****
  2058.   \f2Elm Configuration Guide\f1 for more details on these variables).
  2059.   .sp
  2060.   Simply create the system alias file in the specified directory
  2061. ! as you would a normal alias file, and install it the same way (see the
  2062. ! following section for more details on that).  Voila!!
  2063.   .sp
  2064.   .hn 1 Editing and Installing New Aliases
  2065.   
  2066. --- 290,298 ----
  2067.   \f2Elm Configuration Guide\f1 for more details on these variables).
  2068.   .sp
  2069.   Simply create the system alias file in the specified directory
  2070. ! as you would a normal alias file, and install it using the newalias
  2071. ! command with the -g option (see the following section for more details
  2072. ! on that).  Voila!!
  2073.   .sp
  2074.   .hn 1 Editing and Installing New Aliases
  2075.   
  2076. ***************
  2077. *** 309,316 ****
  2078.   is \*QBut how the heck does this relate to my existing \f2Berkeley Mail\f1
  2079.   aliases and the lower-level \f2sendmail\f1 alias system?\*U  Well,
  2080.   rest assured that if you \f2really\f1 want to have
  2081. ! your aliases down in the transport you can.  No problem.  All you'll
  2082. ! need to do is to turn off the address validation in Elm.
  2083.   .sp
  2084.   And for those ex-\f2Berkeley Mail\f1 fans, you can translate your
  2085.   aliases into the format that Elm wants by running them
  2086. --- 318,324 ----
  2087.   is \*QBut how the heck does this relate to my existing \f2Berkeley Mail\f1
  2088.   aliases and the lower-level \f2sendmail\f1 alias system?\*U  Well,
  2089.   rest assured that if you \f2really\f1 want to have
  2090. ! your aliases down in the transport you can.  No problem.
  2091.   .sp
  2092.   And for those ex-\f2Berkeley Mail\f1 fans, you can translate your
  2093.   aliases into the format that Elm wants by running them
  2094.  
  2095. Index: doc/Config.guid
  2096. Prereq: 5.8
  2097. *** ../elm2.4/doc/Config.guid    Mon Apr 12 00:01:01 1993
  2098. --- doc/Config.guid    Thu Jul 29 22:23:26 1993
  2099. ***************
  2100. *** 1,4 ****
  2101. ! .\" @(#)$Id: Config.guid,v 5.8 1993/04/12 04:00:55 syd Exp $
  2102.   .\"
  2103.   .\"  A guide to the ELM alias system and so on.
  2104.   .\"  format with:
  2105. --- 1,4 ----
  2106. ! .\" @(#)$Id: Config.guid,v 5.9 1993/07/30 02:23:21 syd Exp $
  2107.   .\"
  2108.   .\"  A guide to the ELM alias system and so on.
  2109.   .\"  format with:
  2110. ***************
  2111. *** 11,16 ****
  2112. --- 11,19 ----
  2113.   .\"    Syd Weinstein        elm@DSI.COM (dsinc!elm)
  2114.   .\"
  2115.   .\"  $Log: Config.guid,v $
  2116. + .\" Revision 5.9  1993/07/30  02:23:21  syd
  2117. + .\" fix -q to -g in newalias call
  2118. + .\"
  2119.   .\" Revision 5.8  1993/04/12  04:00:55  syd
  2120.   .\" remove unused ALIAS parameters
  2121.   .\"
  2122. ***************
  2123. *** 378,384 ****
  2124.   then it'll put the current
  2125.   mailbox into this file in the user's home directory.
  2126.   .lp newalias 1.0i
  2127. ! How to install new aliases (note that you MUST have the \f3\-q\f1 option!).
  2128.   .lp readmsg 1.0i
  2129.   What the \f2readmsg\f1 program is installed as.
  2130.   .hu Runtime configuration \(em the global \f2$lib/elm.rc\fP file
  2131. --- 381,387 ----
  2132.   then it'll put the current
  2133.   mailbox into this file in the user's home directory.
  2134.   .lp newalias 1.0i
  2135. ! How to install new aliases (note that you MUST have the \f3\-g\f1 option!).
  2136.   .lp readmsg 1.0i
  2137.   What the \f2readmsg\f1 program is installed as.
  2138.   .hu Runtime configuration \(em the global \f2$lib/elm.rc\fP file
  2139.  
  2140. Index: doc/Ref.guide
  2141. Prereq: 5.25
  2142. *** ../elm2.4/doc/Ref.guide    Thu May 13 23:56:40 1993
  2143. --- doc/Ref.guide    Sun Sep 19 19:43:36 1993
  2144. ***************
  2145. *** 1,4 ****
  2146. ! .\" @(#)$Id: Ref.guide,v 5.25 1993/05/14 03:56:39 syd Exp $
  2147.   .\"
  2148.   .\"  Reference guide to the Elm mail system.
  2149.   .\"  format with
  2150. --- 1,4 ----
  2151. ! .\" @(#)$Id: Ref.guide,v 5.30 1993/09/19 23:43:35 syd Exp $
  2152.   .\"
  2153.   .\"  Reference guide to the Elm mail system.
  2154.   .\"  format with
  2155. ***************
  2156. *** 12,17 ****
  2157. --- 12,39 ----
  2158.   .\"  (C) Copyright 1988-1992 Usenet Community Trust
  2159.   .\"
  2160.   .\"  $Log: Ref.guide,v $
  2161. + .\" Revision 5.30  1993/09/19  23:43:35  syd
  2162. + .\" Conform textencoding addition to style standard.
  2163. + .\" From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  2164. + .\"
  2165. + .\" Revision 5.29  1993/08/23  02:53:52  syd
  2166. + .\" Added some documentation for textencoding variable.
  2167. + .\" From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  2168. + .\"
  2169. + .\" Revision 5.28  1993/08/10  21:25:09  syd
  2170. + .\" Correct typo and use hard spaces within quotes in *clear-weed-list* note.
  2171. + .\" From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  2172. + .\"
  2173. + .\" Revision 5.27  1993/08/03  18:56:24  syd
  2174. + .\" Added text about how the weedout list works w.r.t From: and From_
  2175. + .\" From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  2176. + .\"
  2177. + .\" Revision 5.26  1993/07/20  02:43:05  syd
  2178. + .\" [ Patch description ]
  2179. + .\" Update the example elmrc and move a couple out of order variable
  2180. + .\" descriptions.
  2181. + .\" From: dwolfe@pffft.sps.mot.com (Dave Wolfe)
  2182. + .\"
  2183.   .\" Revision 5.25  1993/05/14  03:56:39  syd
  2184.   .\" Moved the new numeric variables to the Numeric Variables section and
  2185.   .\" applied the quoting/highlight policy to them.
  2186. ***************
  2187. *** 364,377 ****
  2188.   \f3charset\f1. Elm tries to know which character set could display US-ASCII
  2189.   too, but its list of compatible character sets is probably not complete.
  2190.   
  2191. - .lp displaycharset 1.0i
  2192. - This is the character set which is supported by your terminal.
  2193. - The default depends on your site's installation but is usually
  2194. - US-ASCII. For sites with
  2195. - .xw
  2196. - support, ISO-8859-1
  2197. - is a reasonable default.
  2198.   .lp compatcharsets 1.0i
  2199.   This is the list of character sets which are more or less a superset
  2200.   of US-ASCII. This enables Elm to display messages with \f3charset\f1=US-ASCII
  2201. --- 386,391 ----
  2202. ***************
  2203. *** 440,445 ****
  2204. --- 454,467 ----
  2205.   .br
  2206.   z    Z) signature dashes \f2(sigdashes)\f1
  2207.   
  2208. + .lp displaycharset 1.0i
  2209. + This is the character set which is supported by your terminal.
  2210. + The default depends on your site's installation but is usually
  2211. + US-ASCII. For sites with
  2212. + .xw
  2213. + support, ISO-8859-1
  2214. + is a reasonable default.
  2215.   .lp easyeditor+ 1.0i
  2216.   The editor to be used by the \*Q~e\*U escape within the builtin editor.
  2217.   The default value is the value of the configuration variable \f2emacs_editor\f1
  2218. ***************
  2219. *** 693,698 ****
  2220. --- 715,739 ----
  2221.   itself and affects only their order on the index screen.  The
  2222.   default is \f2mailbox\f1 order.
  2223.   
  2224. + .lp textencoding 1.0i
  2225. + This is the value for the
  2226. + \*QContent-Transfer-Encoding:\*U header,
  2227. + which is used to tell MIME
  2228. + (Multipurpose Internet Mail Extension) capable mail readers how they
  2229. + should decode your mail.
  2230. + The default depends on your site's installation, but is usually
  2231. + \f27bit\f1. Other possible values are \f28bit\f1, \f2base64\f1 or
  2232. + \f2quoted-printable\f1 (see RFC1341 for details).
  2233. + \f27bit\f1 and \f28bit\f1 implies no encoding.
  2234. + .sp
  2235. + Note that Elm doesn't look at this value; it is just placed in your
  2236. + outgoing mail headers.
  2237. + If you put \f2base64\f1 or \f2quoted-printable\f1 as the value,
  2238. + Elm will NOT turn your message into a \f2base64\f1/\f2quoted-printable\f1
  2239. + encoded message.  You will have to do that
  2240. + yourself with whatever means are available in your MIME capable mail reader.
  2241. + Metamail, for instance, has a program called mimencode that you can use.
  2242.   .lp tmpdir 1.0i
  2243.   Use this if you want to define your own directory for the temporary
  2244.   file Elm creates while running.  This is only necessary if using the
  2245. ***************
  2246. *** 737,744 ****
  2247.   \&Status:
  2248.   \&X-Mailer:
  2249.   .ft 1
  2250. - .in 0
  2251.   .fi
  2252.   .ne 8
  2253.   .hu Numeric Variables
  2254.   
  2255. --- 778,791 ----
  2256.   \&Status:
  2257.   \&X-Mailer:
  2258.   .ft 1
  2259.   .fi
  2260. + .sp
  2261. + .in 1.0i
  2262. + Note that the \*QFrom\*U entry weeds out both \*QFrom:\*U and the
  2263. + \*QFrom\ \*U headers. If you just want to weed out \*QFrom\ \*U, for example,
  2264. + put a \*Q*clear-weed-list*\*U at the start of the list followed by \*QFrom_\*U
  2265. + or \*QFrom\ \*U.
  2266. + .in 0
  2267.   .ne 8
  2268.   .hu Numeric Variables
  2269.   
  2270. ***************
  2271. *** 941,951 ****
  2272.   Set ON to get a copy of mail you send to a mailing list you are on,
  2273.   otherwise you do not get a copy of such messages.  The default is OFF.
  2274.   
  2275. - .lp names* 1.0i
  2276. - Set OFF to display the primary recipients' addresses on your screen
  2277. - with their full names when you send a message.  Set ON to display only
  2278. - the full names.  The default is ON.
  2279.   .lp movepage 1.0i
  2280.   Set ON to enable commands that move through the folder by pages (see
  2281.   the \*q+\*u, \*q\-\*u, \f2<right>\f1, and \f2<left>\f1 keys in section
  2282. --- 988,993 ----
  2283. ***************
  2284. *** 953,958 ****
  2285. --- 995,1005 ----
  2286.   that page of messages.  Set OFF to not alter the current message
  2287.   pointer location when moving through pages.  The default is OFF.
  2288.   
  2289. + .lp names* 1.0i
  2290. + Set OFF to display the primary recipients' addresses on your screen
  2291. + with their full names when you send a message.  Set ON to display only
  2292. + the full names.  The default is ON.
  2293.   .lp noheader 1.0i
  2294.   Set ON to not include the headers of messages when copying a message
  2295.   into the edit buffer for replying or forwarding (see the \f3autocopy\f1
  2296. ***************
  2297. *** 1068,1074 ****
  2298.   .in 0
  2299.   .sp
  2300.   .sp
  2301. ! For a better idea of how this all works, here's my \f2.elm/elmrc\f1
  2302.   file.  While looking through it, notice that you can have lots of
  2303.   comments and blank lines for readability and that you can also use
  2304.   \*Qshell variables\*U and the \*q~\*u (tilde) metacharacter for your home
  2305. --- 1115,1121 ----
  2306.   .in 0
  2307.   .sp
  2308.   .sp
  2309. ! For a better idea of how this all works, here's a sample \f2.elm/elmrc\f1
  2310.   file.  While looking through it, notice that you can have lots of
  2311.   comments and blank lines for readability and that you can also use
  2312.   \*Qshell variables\*U and the \*q~\*u (tilde) metacharacter for your home
  2313. ***************
  2314. *** 1082,1088 ****
  2315.     #
  2316.     # .elm/elmrc \- options file for the ELM mail system
  2317.     #
  2318. !   # Saved automatically by ELM 2.4 for Dave Taylor
  2319.     #
  2320.   
  2321.     # For yes/no settings with ?, ON means yes, OFF means no
  2322. --- 1129,1135 ----
  2323.     #
  2324.     # .elm/elmrc \- options file for the ELM mail system
  2325.     #
  2326. !   # Saved automatically by ELM 2.4 for Elm Development Group
  2327.     #
  2328.   
  2329.     # For yes/no settings with ?, ON means yes, OFF means no
  2330. ***************
  2331. *** 1091,1110 ****
  2332.     calendar = ~/.Agenda
  2333.   
  2334.     # what editor to use ("none" means simulate Berkeley Mail)
  2335.     editor = none
  2336.   
  2337.     # the character to use in the builtin editor for entering commands
  2338.     escape = ~
  2339.   
  2340.     # the full user name for outbound mail
  2341. !   fullname = Dave Taylor
  2342.   
  2343.     # where to save received messages to, default file is "=received"
  2344.     receivedmail = $HOME/Mail/received
  2345.   
  2346.     # where to save my mail to, default directory is "Mail"
  2347. !   maildir = /users/taylor/Mail
  2348.   
  2349.     # program to use for displaying messages (\'builtin\' is recommended)
  2350.     pager = builtin
  2351.   
  2352. --- 1138,1161 ----
  2353.     calendar = ~/.Agenda
  2354.   
  2355.     # what editor to use ("none" means simulate Berkeley Mail)
  2356. +   # \'%s\' can be used as the temporary filename for the outgoing message
  2357.     editor = none
  2358.   
  2359.     # the character to use in the builtin editor for entering commands
  2360.     escape = ~
  2361.   
  2362.     # the full user name for outbound mail
  2363. !   fullname = Elm Development Group
  2364.   
  2365.     # where to save received messages to, default file is "=received"
  2366.     receivedmail = $HOME/Mail/received
  2367.   
  2368.     # where to save my mail to, default directory is "Mail"
  2369. !   maildir = /users/elmdev/Mail
  2370.   
  2371. +   #directory to hold my temporary files to avoid NFS cross mount problems
  2372. +   tmpdir = /users/elmdev/Mail/tmp
  2373.     # program to use for displaying messages (\'builtin\' is recommended)
  2374.     pager = builtin
  2375.   
  2376. ***************
  2377. *** 1114,1121 ****
  2378.     # how to print a message (\'%s\' is the filename)
  2379.     print = lpr \-Plw2 %s
  2380.   
  2381.     # where to save copies of outgoing mail to, default file is "=sent"
  2382. !   sentmail = /users/taylor/Mail/mail.sent
  2383.   
  2384.     # the shell to use for shell escapes
  2385.     shell = /bin/csh
  2386. --- 1165,1175 ----
  2387.     # how to print a message (\'%s\' is the filename)
  2388.     print = lpr \-Plw2 %s
  2389.   
  2390. +   # attribution string for replies (\'%s\' is the author of original message)
  2391. +   attribution = According to %s:
  2392.     # where to save copies of outgoing mail to, default file is "=sent"
  2393. !   sentmail = /users/elmdev/Mail/mail.sent
  2394.   
  2395.     # the shell to use for shell escapes
  2396.     shell = /bin/csh
  2397. ***************
  2398. *** 1129,1140 ****
  2399.     # do we want dashes above signatures? (News 2.11 compatibility and convention)
  2400.     sigdashes = ON
  2401.   
  2402. !   # how to sort folders, "Mailbox" by default
  2403.     sortby = Reverse\-Received
  2404.   
  2405. -   # how to sort the alias list, "Name" by default
  2406. -   aliassortby = Name
  2407.     # should the default be to delete messages we\'ve marked for deletion?
  2408.     alwaysdelete = ON
  2409.   
  2410. --- 1183,1191 ----
  2411.     # do we want dashes above signatures? (News 2.11 compatibility and convention)
  2412.     sigdashes = ON
  2413.   
  2414. !   # how to sort folders, "Reverse Sent" by default
  2415.     sortby = Reverse\-Received
  2416.   
  2417.     # should the default be to delete messages we\'ve marked for deletion?
  2418.     alwaysdelete = ON
  2419.   
  2420. ***************
  2421. *** 1175,1181 ****
  2422.   
  2423.     # should we display the three\-line \'mini\' menu?
  2424.     menu = ON
  2425. !   # would you like a copy of a message you send to an alias you are on???
  2426.     metoo = OFF
  2427.   
  2428.     # when using the page commands (+ \- <NEXT> <PREV>) change the current
  2429. --- 1226,1233 ----
  2430.   
  2431.     # should we display the three\-line \'mini\' menu?
  2432.     menu = ON
  2433. !   # would you like a copy of a message you send to an alias you are on?
  2434.     metoo = OFF
  2435.   
  2436.     # when using the page commands (+ \- <NEXT> <PREV>) change the current
  2437. ***************
  2438. *** 1233,1239 ****
  2439.   
  2440.     # alternative addresses that I could receive mail from (usually a
  2441.     # forwarding mailbox) and don\'t want to have listed...
  2442. !   alternatives = hplabs!taylor  hpldat!taylor  taylor@hplabs  taylor%hpldat
  2443.   .fi
  2444.   .br
  2445.   .ne 5
  2446. --- 1285,1323 ----
  2447.   
  2448.     # alternative addresses that I could receive mail from (usually a
  2449.     # forwarding mailbox) and don\'t want to have listed...
  2450. !   alternatives = dsidev!elmdev  dsirel!elmdev  elmdev@dsidev  elmdev%dsidev
  2451. !   # list of delivery precedences allowed, or empty to allow anything
  2452. !   # precedence may be followed by optional ":priority" specification
  2453. !   precedences = special\-delivery:urgent air\-mail:urgent first\-class bulk junk
  2454. !   # name of Character Set used with MIME text/plain Content\-type
  2455. !   # US\-ASCII is default. Be aware that if you use a national charset
  2456. !   # elm probably needs metamail to display US\-ASCII. Elm tries to
  2457. !   # know if that charset could display US\-ASCII too, but the list
  2458. !   # of us\-ascii compatible charsets is not yet complete
  2459. !   charset=US\-ASCII
  2460. !   # name of Character Set which the display supports. This is independent
  2461. !   # of the above "charset".
  2462. !   displaycharset=US\-ASCII
  2463. !   # list of Character Sets, which are more or less a superset of US\-ASCII
  2464. !   # so we know that we can display messages with charset=US\-ASCII without
  2465. !   # help of metamail
  2466. !   compatcharsets = ISO\-8859\-1 ISO\-8859\-2 ISO\-8859\-3 ISO\-8859\-4 ISO\-8859\-5 ISO\-8859\-6 ISO\-8859\-7 ISO\-8859\-8 ISO\-8859\-9
  2467. !   # would you like to use termcap/terminfo ti/te entries?
  2468. !   usetite = ON
  2469. !   # Value by which message count is incremented while reading a new mailbox.
  2470. !   # Setting this value to a number larger than one will speed up the time it
  2471. !   # takes to read a large mailbox when using a slow terminal.
  2472. !   readmsginc = 5
  2473. !   # time in seconds which Elm will wait after displaying a transient message
  2474. !   # and before erasing it.  Can be 0 or positive integer.
  2475. !   sleepmsg = 2
  2476.   .fi
  2477.   .br
  2478.   .ne 5
  2479.  
  2480. Index: doc/elmalias.1
  2481. *** ../elm2.4/doc/elmalias.1    Sun Apr 11 22:11:17 1993
  2482. --- doc/elmalias.1    Tue Aug  3 15:23:12 1993
  2483. ***************
  2484. *** 10,16 ****
  2485.   .SH SYNOPSIS
  2486.   .B elmalias
  2487.   [
  2488. ! .B \-aenrsuvV
  2489.   ] [
  2490.   .B \-f
  2491.   format ] [ name  ... ]
  2492. --- 10,16 ----
  2493.   .SH SYNOPSIS
  2494.   .B elmalias
  2495.   [
  2496. ! .B \-adenrsuvV
  2497.   ] [
  2498.   .B \-f
  2499.   format ] [ name  ... ]
  2500. ***************
  2501. *** 91,96 ****
  2502. --- 91,103 ----
  2503.   Selects an alternative output format.  The ``Alias'' information is
  2504.   displayed in addition to and preceding the usual ``Address'' information.
  2505.   .\"
  2506. + .\"
  2507. + .\"
  2508. + .IP \fB\-d\fP
  2509. + Turns debugging on. Has no effect unless
  2510. + .I elmalias
  2511. + was compiled with debugging enabled.
  2512. + .\"
  2513.   .\"
  2514.   .\"
  2515.   .IP \fB\-e\fP
  2516.  
  2517. Index: doc/elmrc-info
  2518. Prereq: 5.9
  2519. *** ../elm2.4/doc/elmrc-info    Sun Jun  6 14:24:47 1993
  2520. --- doc/elmrc-info    Sun Aug 22 22:53:55 1993
  2521. ***************
  2522. *** 1,4 ****
  2523. ! #@(#)$Id: elmrc-info,v 5.9 1993/06/06 17:50:52 syd Exp $
  2524.   # Elm Version 2.4
  2525.   # For yes/no settings with ?, ON means yes, OFF means no
  2526.   
  2527. --- 1,4 ----
  2528. ! #@(#)$Id: elmrc-info,v 5.10 1993/08/23 02:53:52 syd Exp $
  2529.   # Elm Version 2.4
  2530.   # For yes/no settings with ?, ON means yes, OFF means no
  2531.   
  2532. ***************
  2533. *** 232,234 ****
  2534. --- 232,239 ----
  2535.   sleepmsg
  2536.   # time in seconds which Elm will wait after displaying a transient message
  2537.   # and before erasing it.  Can be 0 or positive integer.
  2538. + textencoding
  2539. + # Type of encoding to be put into the MIME Content-Transfer-Encoding header.
  2540. + # Usual values are 7bit or 8bit.
  2541. + # NOTE: Elm will not encode your message based on this variable.
  2542.  
  2543. Index: filter/actions.c
  2544. Prereq: 5.6
  2545. *** ../elm2.4/filter/actions.c    Tue Apr 20 21:25:46 1993
  2546. --- filter/actions.c    Tue Aug  3 15:28:40 1993
  2547. ***************
  2548. *** 1,8 ****
  2549.   
  2550. ! static char rcsid[] ="@(#)$Id: actions.c,v 5.6 1993/04/21 01:25:45 syd Exp $";
  2551.   
  2552.   /*******************************************************************************
  2553. !  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
  2554.    *
  2555.    *             Copyright (c) 1988-1992 USENET Community Trust
  2556.    *             Copyright (c) 1986,1987 Dave Taylor
  2557. --- 1,8 ----
  2558.   
  2559. ! static char rcsid[] ="@(#)$Id: actions.c,v 5.8 1993/08/03 19:28:39 syd Exp $";
  2560.   
  2561.   /*******************************************************************************
  2562. !  *  The Elm Mail System  -  $Revision: 5.8 $   $State: Exp $
  2563.    *
  2564.    *             Copyright (c) 1988-1992 USENET Community Trust
  2565.    *             Copyright (c) 1986,1987 Dave Taylor
  2566. ***************
  2567. *** 14,19 ****
  2568. --- 14,35 ----
  2569.    *
  2570.    *******************************************************************************
  2571.    * $Log: actions.c,v $
  2572. +  * Revision 5.8  1993/08/03  19:28:39  syd
  2573. +  * Elm tries to replace the system toupper() and tolower() on current
  2574. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2575. +  * collide during linking with routines in isctype.o.  This patch adds
  2576. +  * a Configure test to determine whether replacements are really needed
  2577. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2578. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2579. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2580. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2581. +  * were dropped.
  2582. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2583. +  *
  2584. +  * Revision 5.7  1993/08/03  19:07:58  syd
  2585. +  * Removed bogus string lockfile.
  2586. +  * From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  2587. +  *
  2588.    * Revision 5.6  1993/04/21  01:25:45  syd
  2589.    * I'm using Elm 2.4.21 under Linux.  Linux has no Bourne shell.  Each
  2590.    * user installs her favorite shell as /bin/sh.  I use Bash 1.12.
  2591. ***************
  2592. *** 61,67 ****
  2593.   
  2594.   #include <stdio.h>
  2595.   #include <pwd.h>
  2596. - #include <ctype.h>
  2597.   #include <fcntl.h>
  2598.   
  2599.   #include "defs.h"
  2600. --- 77,82 ----
  2601. ***************
  2602. *** 83,89 ****
  2603.   
  2604.       FILE *pipefd, *tempfd, *mailfd;
  2605.       int  in_header = TRUE, line_count = 0, mailunit, pid, statusp;
  2606. !     char tempfile[SLEN], mailbox[SLEN], lockfile[SLEN],
  2607.            buffer[VERY_LONG_STRING], *cp;
  2608.   
  2609.       if (verbose && ! log_actions_only && outfd != NULL)
  2610. --- 98,104 ----
  2611.   
  2612.       FILE *pipefd, *tempfd, *mailfd;
  2613.       int  in_header = TRUE, line_count = 0, mailunit, pid, statusp;
  2614. !     char tempfile[SLEN], mailbox[SLEN],
  2615.            buffer[VERY_LONG_STRING], *cp;
  2616.   
  2617.       if (verbose && ! log_actions_only && outfd != NULL)
  2618. ***************
  2619. *** 209,220 ****
  2620.           if (outfd != NULL) {
  2621.             fprintf(outfd, catgets(elm_msg_cat,FilterSet,
  2622.                        FilterCouldntCreateLockFile,
  2623. !              "filter (%s): Couldn't create lock file %s\n"),
  2624. !             date_n_user(), lockfile);
  2625.             fprintf(outfd, catgets(elm_msg_cat,FilterSet,
  2626.                        FilterCantOpenMailBox,
  2627.                "filter (%s): Can't open mailbox %s!\n"),
  2628. !             date_n_user(), lockfile);
  2629.           }
  2630.           if ((mailfd = emergency_local_delivery()) == NULL)
  2631.             exit(1);
  2632. --- 224,235 ----
  2633.           if (outfd != NULL) {
  2634.             fprintf(outfd, catgets(elm_msg_cat,FilterSet,
  2635.                        FilterCouldntCreateLockFile,
  2636. !              "filter (%s): Couldn't create lock file\n"),
  2637. !             date_n_user());
  2638.             fprintf(outfd, catgets(elm_msg_cat,FilterSet,
  2639.                        FilterCantOpenMailBox,
  2640.                "filter (%s): Can't open mailbox %s!\n"),
  2641. !             date_n_user(), mailbox);
  2642.           }
  2643.           if ((mailfd = emergency_local_delivery()) == NULL)
  2644.             exit(1);
  2645.  
  2646. Index: filter/filter.c
  2647. Prereq: 5.5
  2648. *** ../elm2.4/filter/filter.c    Sun Jun  6 14:24:47 1993
  2649. --- filter/filter.c    Tue Aug  3 15:28:40 1993
  2650. ***************
  2651. *** 1,8 ****
  2652.   
  2653. ! static char rcsid[] ="@(#)$Id: filter.c,v 5.5 1993/06/06 17:58:20 syd Exp $";
  2654.   
  2655.   /*******************************************************************************
  2656. !  *  The Elm Mail System  -  $Revision: 5.5 $   $State: Exp $
  2657.    *
  2658.    *             Copyright (c) 1988-1992 USENET Community Trust
  2659.    *             Copyright (c) 1986,1987 Dave Taylor
  2660. --- 1,8 ----
  2661.   
  2662. ! static char rcsid[] ="@(#)$Id: filter.c,v 5.6 1993/08/03 19:28:39 syd Exp $";
  2663.   
  2664.   /*******************************************************************************
  2665. !  *  The Elm Mail System  -  $Revision: 5.6 $   $State: Exp $
  2666.    *
  2667.    *             Copyright (c) 1988-1992 USENET Community Trust
  2668.    *             Copyright (c) 1986,1987 Dave Taylor
  2669. ***************
  2670. *** 14,19 ****
  2671. --- 14,31 ----
  2672.    *
  2673.    *******************************************************************************
  2674.    * $Log: filter.c,v $
  2675. +  * Revision 5.6  1993/08/03  19:28:39  syd
  2676. +  * Elm tries to replace the system toupper() and tolower() on current
  2677. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2678. +  * collide during linking with routines in isctype.o.  This patch adds
  2679. +  * a Configure test to determine whether replacements are really needed
  2680. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2681. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2682. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2683. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2684. +  * were dropped.
  2685. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2686. +  *
  2687.    * Revision 5.5  1993/06/06  17:58:20  syd
  2688.    * make white space skipping work for blank or tab
  2689.    *
  2690. ***************
  2691. *** 64,70 ****
  2692.   
  2693.   #include <stdio.h>
  2694.   #include <pwd.h>
  2695. - #include <ctype.h>
  2696.   #include "defs.h"
  2697.   #ifdef I_TIME
  2698.   #  include <time.h>
  2699. --- 76,81 ----
  2700.  
  2701. Index: filter/parse.c
  2702. Prereq: 5.11
  2703. *** ../elm2.4/filter/parse.c    Sun Apr 11 23:04:02 1993
  2704. --- filter/parse.c    Sun Sep 19 19:11:18 1993
  2705. ***************
  2706. *** 1,8 ****
  2707.   
  2708. ! static char rcsid[] ="@(#)$Id: parse.c,v 5.11 1993/04/12 03:04:01 syd Exp $";
  2709.   
  2710.   /*******************************************************************************
  2711. !  *  The Elm Mail System  -  $Revision: 5.11 $   $State: Exp $
  2712.    *
  2713.    *             Copyright (c) 1988-1992 USENET Community Trust
  2714.    *             Copyright (c) 1986,1987 Dave Taylor
  2715. --- 1,8 ----
  2716.   
  2717. ! static char rcsid[] ="@(#)$Id: parse.c,v 5.13 1993/09/19 23:11:17 syd Exp $";
  2718.   
  2719.   /*******************************************************************************
  2720. !  *  The Elm Mail System  -  $Revision: 5.13 $   $State: Exp $
  2721.    *
  2722.    *             Copyright (c) 1988-1992 USENET Community Trust
  2723.    *             Copyright (c) 1986,1987 Dave Taylor
  2724. ***************
  2725. *** 14,19 ****
  2726. --- 14,35 ----
  2727.    *
  2728.    *******************************************************************************
  2729.    * $Log: parse.c,v $
  2730. +  * Revision 5.13  1993/09/19  23:11:17  syd
  2731. +  * strtokq was called with the wrong number of parameters.
  2732. +  * From: Jan.Djarv@sa.erisoft.se (Jan Djarv)
  2733. +  *
  2734. +  * Revision 5.12  1993/08/03  19:28:39  syd
  2735. +  * Elm tries to replace the system toupper() and tolower() on current
  2736. +  * BSD systems, which is unnecessary.  Even worse, the replacements
  2737. +  * collide during linking with routines in isctype.o.  This patch adds
  2738. +  * a Configure test to determine whether replacements are really needed
  2739. +  * (BROKE_CTYPE definition).  The <ctype.h> header file is now included
  2740. +  * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled
  2741. +  * there.  Inclusion of <ctype.h> was removed from *all* the individual
  2742. +  * files, and the toupper() and tolower() routines in lib/opt_utils.c
  2743. +  * were dropped.
  2744. +  * From: chip@chinacat.unicom.com (Chip Rosenthal)
  2745. +  *
  2746.    * Revision 5.11  1993/04/12  03:04:01  syd
  2747.    * Removed a malloc of a struct condition_rec that is never used.
  2748.    * From: Jan Djarv <Jan.Djarv@sa.erisoft.se>
  2749. ***************
  2750. *** 77,83 ****
  2751.   **/
  2752.   
  2753.   #include <stdio.h>
  2754. - #include <ctype.h>
  2755.   
  2756.   #include "defs.h"
  2757.   #include "filter.h"
  2758. --- 93,98 ----
  2759. ***************
  2760. *** 350,356 ****
  2761.           /* Special for regular expressions (enclosed between //) */
  2762.           cond_argument[0] = '\0';
  2763.           for (;;) {
  2764. !               if ((word = strtokq(str, "/")) == NULL)
  2765.                   break;
  2766.             strcat(cond_argument, word);
  2767.             if (word[strlen(word)-1] == '\\') /* If / was escaped ... */
  2768. --- 365,371 ----
  2769.           /* Special for regular expressions (enclosed between //) */
  2770.           cond_argument[0] = '\0';
  2771.           for (;;) {
  2772. !               if ((word = strtokq(str, "/", 0)) == NULL)
  2773.                   break;
  2774.             strcat(cond_argument, word);
  2775.             if (word[strlen(word)-1] == '\\') /* If / was escaped ... */
  2776.  
  2777.